1SET @max_row = 20; 2SET @@session.default_storage_engine = 'TokuDB'; 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# 1 Increase the size of the column used in the partitioning 45# function and/or PRIMARY KEY and/or UNIQUE INDEX 46#======================================================================== 47#------------------------------------------------------------------------ 48# 1.1 ALTER column f_int2 not used in partitioning function 49#------------------------------------------------------------------------ 50# 1.1.1 no PRIMARY KEY or UNIQUE INDEX exists 51DROP TABLE IF EXISTS t1; 52CREATE TABLE t1 ( 53f_int1 INTEGER, 54f_int2 INTEGER, 55f_char1 CHAR(20), 56f_char2 CHAR(20), 57f_charbig VARCHAR(1000) 58 59) 60PARTITION BY HASH(f_int1) PARTITIONS 2; 61INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 62SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 63WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 64ALTER TABLE t1 MODIFY f_int2 BIGINT; 65INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 66SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 67WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 68# Start usability test (inc/partition_check.inc) 69create_command 70SHOW CREATE TABLE t1; 71Table Create Table 72t1 CREATE TABLE `t1` ( 73 `f_int1` int(11) DEFAULT NULL, 74 `f_int2` bigint(20) DEFAULT NULL, 75 `f_char1` char(20) DEFAULT NULL, 76 `f_char2` char(20) DEFAULT NULL, 77 `f_charbig` varchar(1000) DEFAULT NULL 78) ENGINE=TokuDB DEFAULT CHARSET=latin1 79/*!50100 PARTITION BY HASH (f_int1) 80PARTITIONS 2 */ 81 82# check prerequisites-1 success: 1 83# check COUNT(*) success: 1 84# check MIN/MAX(f_int1) success: 1 85# check MIN/MAX(f_int2) success: 1 86INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 87SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 88CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 89WHERE f_int1 IN (2,3); 90# check prerequisites-3 success: 1 91DELETE FROM t1 WHERE f_charbig = 'delete me'; 92# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 93# check read via f_int1 success: 1 94# check read via f_int2 success: 1 95 96# check multiple-1 success: 1 97DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 98 99# check multiple-2 success: 1 100INSERT INTO t1 SELECT * FROM t0_template 101WHERE MOD(f_int1,3) = 0; 102 103# check multiple-3 success: 1 104UPDATE t1 SET f_int1 = f_int1 + @max_row 105WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 106AND @max_row_div2 + @max_row_div4; 107 108# check multiple-4 success: 1 109DELETE FROM t1 110WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 111AND @max_row_div2 + @max_row_div4 + @max_row; 112 113# check multiple-5 success: 1 114SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 115INSERT INTO t1 116SET f_int1 = @cur_value , f_int2 = @cur_value, 117f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 118f_charbig = '#SINGLE#'; 119 120# check single-1 success: 1 121SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 122INSERT INTO t1 123SET f_int1 = @cur_value , f_int2 = @cur_value, 124f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 125f_charbig = '#SINGLE#'; 126 127# check single-2 success: 1 128SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 129SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 130UPDATE t1 SET f_int1 = @cur_value2 131WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 132 133# check single-3 success: 1 134SET @cur_value1= -1; 135SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 136UPDATE t1 SET f_int1 = @cur_value1 137WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 138 139# check single-4 success: 1 140SELECT MAX(f_int1) INTO @cur_value FROM t1; 141DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 142 143# check single-5 success: 1 144DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 145 146# check single-6 success: 1 147INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 148 149# check single-7 success: 1 150DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 151DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 152INSERT t1 SET f_int1 = 0 , f_int2 = 0, 153f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 154f_charbig = '#NULL#'; 155INSERT INTO t1 156SET f_int1 = NULL , f_int2 = -@max_row, 157f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 158f_charbig = '#NULL#'; 159# check null success: 1 160 161# check null-1 success: 1 162UPDATE t1 SET f_int1 = -@max_row 163WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 164AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 165 166# check null-2 success: 1 167UPDATE t1 SET f_int1 = NULL 168WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 169AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 170 171# check null-3 success: 1 172DELETE FROM t1 173WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 174AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 175 176# check null-4 success: 1 177DELETE FROM t1 178WHERE f_int1 = 0 AND f_int2 = 0 179AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 180AND f_charbig = '#NULL#'; 181SET AUTOCOMMIT= 0; 182INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 183SELECT f_int1, f_int1, '', '', 'was inserted' 184FROM t0_template source_tab 185WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 186 187# check transactions-1 success: 1 188COMMIT WORK; 189 190# check transactions-2 success: 1 191ROLLBACK WORK; 192 193# check transactions-3 success: 1 194DELETE FROM t1 WHERE f_charbig = 'was inserted'; 195COMMIT WORK; 196ROLLBACK WORK; 197 198# check transactions-4 success: 1 199INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 200SELECT f_int1, f_int1, '', '', 'was inserted' 201FROM t0_template source_tab 202WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 203 204# check transactions-5 success: 1 205ROLLBACK WORK; 206 207# check transactions-6 success: 1 208# INFO: Storage engine used for t1 seems to be transactional. 209COMMIT; 210 211# check transactions-7 success: 1 212DELETE FROM t1 WHERE f_charbig = 'was inserted'; 213COMMIT WORK; 214SET @@session.sql_mode = 'traditional'; 215Warnings: 216Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 217SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 218INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 219SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 220'', '', 'was inserted' FROM t0_template 221WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 222ERROR 22012: Division by 0 223COMMIT; 224 225# check transactions-8 success: 1 226# INFO: Storage engine used for t1 seems to be able to revert 227# changes made by the failing statement. 228SET @@session.sql_mode = ''; 229Warnings: 230Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 231SET AUTOCOMMIT= 1; 232DELETE FROM t1 WHERE f_charbig = 'was inserted'; 233COMMIT WORK; 234UPDATE t1 SET f_charbig = REPEAT('b', 1000); 235 236# check special-1 success: 1 237UPDATE t1 SET f_charbig = ''; 238 239# check special-2 success: 1 240UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 241INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 242SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 243WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 244INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 245SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 246'just inserted' FROM t0_template 247WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 248CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 249BEGIN 250UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 251f_charbig = 'updated by trigger' 252 WHERE f_int1 = new.f_int1; 253END| 254INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 255SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 256WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 257 258# check trigger-1 success: 1 259DROP TRIGGER trg_1; 260UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 261f_int2 = CAST(f_char1 AS SIGNED INT), 262f_charbig = 'just inserted' 263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 264DELETE FROM t0_aux 265WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 266INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 267SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 268'just inserted' FROM t0_template 269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 270CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 271BEGIN 272UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 273f_charbig = 'updated by trigger' 274 WHERE f_int1 = new.f_int1; 275END| 276INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 277SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 278WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 279 280# check trigger-2 success: 1 281DROP TRIGGER trg_1; 282UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 283f_int2 = CAST(f_char1 AS SIGNED INT), 284f_charbig = 'just inserted' 285 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 286DELETE FROM t0_aux 287WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 288INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 289SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 290'just inserted' FROM t0_template 291WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 292CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 293BEGIN 294UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 295f_charbig = 'updated by trigger' 296 WHERE f_int1 = new.f_int1; 297END| 298UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 299WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 300 301# check trigger-3 success: 1 302DROP TRIGGER trg_1; 303UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 304f_int2 = CAST(f_char1 AS SIGNED INT), 305f_charbig = 'just inserted' 306 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 307DELETE FROM t0_aux 308WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 309INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 310SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 311'just inserted' FROM t0_template 312WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 313CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 314BEGIN 315UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 316f_charbig = 'updated by trigger' 317 WHERE f_int1 = - old.f_int1; 318END| 319UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 320WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 321 322# check trigger-4 success: 1 323DROP TRIGGER trg_1; 324UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 325f_int2 = CAST(f_char1 AS SIGNED INT), 326f_charbig = 'just inserted' 327 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 328DELETE FROM t0_aux 329WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 330INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 331SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 332'just inserted' FROM t0_template 333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 334CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 335BEGIN 336UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 337f_charbig = 'updated by trigger' 338 WHERE f_int1 = new.f_int1; 339END| 340UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 341WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 342 343# check trigger-5 success: 1 344DROP TRIGGER trg_1; 345UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 346f_int2 = CAST(f_char1 AS SIGNED INT), 347f_charbig = 'just inserted' 348 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 349DELETE FROM t0_aux 350WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 351INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 352SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 353'just inserted' FROM t0_template 354WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 355CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 356BEGIN 357UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 358f_charbig = 'updated by trigger' 359 WHERE f_int1 = - old.f_int1; 360END| 361UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 362WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 363 364# check trigger-6 success: 1 365DROP TRIGGER trg_1; 366UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 367f_int2 = CAST(f_char1 AS SIGNED INT), 368f_charbig = 'just inserted' 369 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 370DELETE FROM t0_aux 371WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 372INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 373SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 374'just inserted' FROM t0_template 375WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 376CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 377BEGIN 378UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 379f_charbig = 'updated by trigger' 380 WHERE f_int1 = - old.f_int1; 381END| 382DELETE FROM t0_aux 383WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 384 385# check trigger-7 success: 1 386DROP TRIGGER trg_1; 387UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 388f_int2 = CAST(f_char1 AS SIGNED INT), 389f_charbig = 'just inserted' 390 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 391DELETE FROM t0_aux 392WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 393INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 394SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 395'just inserted' FROM t0_template 396WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 397CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 398BEGIN 399UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 400f_charbig = 'updated by trigger' 401 WHERE f_int1 = - old.f_int1; 402END| 403DELETE FROM t0_aux 404WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 405 406# check trigger-8 success: 1 407DROP TRIGGER trg_1; 408UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 409f_int2 = CAST(f_char1 AS SIGNED INT), 410f_charbig = 'just inserted' 411 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 412DELETE FROM t0_aux 413WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 414DELETE FROM t1 415WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 416CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 417BEGIN 418SET new.f_int1 = old.f_int1 + @max_row, 419new.f_int2 = old.f_int2 - @max_row, 420new.f_charbig = '####updated per update trigger####'; 421END| 422UPDATE t1 423SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 424f_charbig = '####updated per update statement itself####'; 425 426# check trigger-9 success: 1 427DROP TRIGGER trg_2; 428UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 429f_int2 = CAST(f_char1 AS SIGNED INT), 430f_charbig = CONCAT('===',f_char1,'==='); 431CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 432BEGIN 433SET new.f_int1 = new.f_int1 + @max_row, 434new.f_int2 = new.f_int2 - @max_row, 435new.f_charbig = '####updated per update trigger####'; 436END| 437UPDATE t1 438SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 439f_charbig = '####updated per update statement itself####'; 440 441# check trigger-10 success: 1 442DROP TRIGGER trg_2; 443UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 444f_int2 = CAST(f_char1 AS SIGNED INT), 445f_charbig = CONCAT('===',f_char1,'==='); 446CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 447BEGIN 448SET new.f_int1 = @my_max1 + @counter, 449new.f_int2 = @my_min2 - @counter, 450new.f_charbig = '####updated per insert trigger####'; 451SET @counter = @counter + 1; 452END| 453SET @counter = 1; 454SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 455INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 456SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 457CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 458WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 459ORDER BY f_int1; 460DROP TRIGGER trg_3; 461 462# check trigger-11 success: 1 463DELETE FROM t1 464WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 465AND f_int2 <> CAST(f_char1 AS SIGNED INT) 466AND f_charbig = '####updated per insert trigger####'; 467CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 468BEGIN 469SET new.f_int1 = @my_max1 + @counter, 470new.f_int2 = @my_min2 - @counter, 471new.f_charbig = '####updated per insert trigger####'; 472SET @counter = @counter + 1; 473END| 474SET @counter = 1; 475SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 476INSERT INTO t1 (f_char1, f_char2, f_charbig) 477SELECT CAST(f_int1 AS CHAR), 478CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 479WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 480ORDER BY f_int1; 481DROP TRIGGER trg_3; 482 483# check trigger-12 success: 1 484DELETE FROM t1 485WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 486AND f_int2 <> CAST(f_char1 AS SIGNED INT) 487AND f_charbig = '####updated per insert trigger####'; 488ANALYZE TABLE t1; 489Table Op Msg_type Msg_text 490test.t1 analyze status OK 491CHECK TABLE t1 EXTENDED; 492Table Op Msg_type Msg_text 493test.t1 check status OK 494CHECKSUM TABLE t1 EXTENDED; 495Table Checksum 496test.t1 <some_value> 497OPTIMIZE TABLE t1; 498Table Op Msg_type Msg_text 499test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 500test.t1 optimize status OK 501# check layout success: 1 502REPAIR TABLE t1 EXTENDED; 503Table Op Msg_type Msg_text 504test.t1 repair status OK 505# check layout success: 1 506TRUNCATE t1; 507 508# check TRUNCATE success: 1 509# check layout success: 1 510# End usability test (inc/partition_check.inc) 511DROP TABLE t1; 512CREATE TABLE t1 ( 513f_int1 INTEGER, 514f_int2 INTEGER, 515f_char1 CHAR(20), 516f_char2 CHAR(20), 517f_charbig VARCHAR(1000) 518 519) 520PARTITION BY KEY(f_int1) PARTITIONS 5; 521INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 522SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 523WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 524ALTER TABLE t1 MODIFY f_int2 BIGINT; 525INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 526SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 527WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 528# Start usability test (inc/partition_check.inc) 529create_command 530SHOW CREATE TABLE t1; 531Table Create Table 532t1 CREATE TABLE `t1` ( 533 `f_int1` int(11) DEFAULT NULL, 534 `f_int2` bigint(20) DEFAULT NULL, 535 `f_char1` char(20) DEFAULT NULL, 536 `f_char2` char(20) DEFAULT NULL, 537 `f_charbig` varchar(1000) DEFAULT NULL 538) ENGINE=TokuDB DEFAULT CHARSET=latin1 539/*!50100 PARTITION BY KEY (f_int1) 540PARTITIONS 5 */ 541 542# check prerequisites-1 success: 1 543# check COUNT(*) success: 1 544# check MIN/MAX(f_int1) success: 1 545# check MIN/MAX(f_int2) success: 1 546INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 547SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 548CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 549WHERE f_int1 IN (2,3); 550# check prerequisites-3 success: 1 551DELETE FROM t1 WHERE f_charbig = 'delete me'; 552# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 553# check read via f_int1 success: 1 554# check read via f_int2 success: 1 555 556# check multiple-1 success: 1 557DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 558 559# check multiple-2 success: 1 560INSERT INTO t1 SELECT * FROM t0_template 561WHERE MOD(f_int1,3) = 0; 562 563# check multiple-3 success: 1 564UPDATE t1 SET f_int1 = f_int1 + @max_row 565WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 566AND @max_row_div2 + @max_row_div4; 567 568# check multiple-4 success: 1 569DELETE FROM t1 570WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 571AND @max_row_div2 + @max_row_div4 + @max_row; 572 573# check multiple-5 success: 1 574SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 575INSERT INTO t1 576SET f_int1 = @cur_value , f_int2 = @cur_value, 577f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 578f_charbig = '#SINGLE#'; 579 580# check single-1 success: 1 581SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 582INSERT INTO t1 583SET f_int1 = @cur_value , f_int2 = @cur_value, 584f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 585f_charbig = '#SINGLE#'; 586 587# check single-2 success: 1 588SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 589SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 590UPDATE t1 SET f_int1 = @cur_value2 591WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 592 593# check single-3 success: 1 594SET @cur_value1= -1; 595SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 596UPDATE t1 SET f_int1 = @cur_value1 597WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 598 599# check single-4 success: 1 600SELECT MAX(f_int1) INTO @cur_value FROM t1; 601DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 602 603# check single-5 success: 1 604DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 605 606# check single-6 success: 1 607INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 608 609# check single-7 success: 1 610DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 611DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 612INSERT t1 SET f_int1 = 0 , f_int2 = 0, 613f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 614f_charbig = '#NULL#'; 615INSERT INTO t1 616SET f_int1 = NULL , f_int2 = -@max_row, 617f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 618f_charbig = '#NULL#'; 619# check null success: 1 620 621# check null-1 success: 1 622UPDATE t1 SET f_int1 = -@max_row 623WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 624AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 625 626# check null-2 success: 1 627UPDATE t1 SET f_int1 = NULL 628WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 629AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 630 631# check null-3 success: 1 632DELETE FROM t1 633WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 634AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 635 636# check null-4 success: 1 637DELETE FROM t1 638WHERE f_int1 = 0 AND f_int2 = 0 639AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 640AND f_charbig = '#NULL#'; 641SET AUTOCOMMIT= 0; 642INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 643SELECT f_int1, f_int1, '', '', 'was inserted' 644FROM t0_template source_tab 645WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 646 647# check transactions-1 success: 1 648COMMIT WORK; 649 650# check transactions-2 success: 1 651ROLLBACK WORK; 652 653# check transactions-3 success: 1 654DELETE FROM t1 WHERE f_charbig = 'was inserted'; 655COMMIT WORK; 656ROLLBACK WORK; 657 658# check transactions-4 success: 1 659INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 660SELECT f_int1, f_int1, '', '', 'was inserted' 661FROM t0_template source_tab 662WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 663 664# check transactions-5 success: 1 665ROLLBACK WORK; 666 667# check transactions-6 success: 1 668# INFO: Storage engine used for t1 seems to be transactional. 669COMMIT; 670 671# check transactions-7 success: 1 672DELETE FROM t1 WHERE f_charbig = 'was inserted'; 673COMMIT WORK; 674SET @@session.sql_mode = 'traditional'; 675Warnings: 676Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 677SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 678INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 679SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 680'', '', 'was inserted' FROM t0_template 681WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 682ERROR 22012: Division by 0 683COMMIT; 684 685# check transactions-8 success: 1 686# INFO: Storage engine used for t1 seems to be able to revert 687# changes made by the failing statement. 688SET @@session.sql_mode = ''; 689Warnings: 690Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 691SET AUTOCOMMIT= 1; 692DELETE FROM t1 WHERE f_charbig = 'was inserted'; 693COMMIT WORK; 694UPDATE t1 SET f_charbig = REPEAT('b', 1000); 695 696# check special-1 success: 1 697UPDATE t1 SET f_charbig = ''; 698 699# check special-2 success: 1 700UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 701INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 702SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 703WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 704INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 705SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 706'just inserted' FROM t0_template 707WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 708CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 709BEGIN 710UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 711f_charbig = 'updated by trigger' 712 WHERE f_int1 = new.f_int1; 713END| 714INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 715SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 717 718# check trigger-1 success: 1 719DROP TRIGGER trg_1; 720UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 721f_int2 = CAST(f_char1 AS SIGNED INT), 722f_charbig = 'just inserted' 723 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 724DELETE FROM t0_aux 725WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 726INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 727SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 728'just inserted' FROM t0_template 729WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 730CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 731BEGIN 732UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 733f_charbig = 'updated by trigger' 734 WHERE f_int1 = new.f_int1; 735END| 736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 737SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 738WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 739 740# check trigger-2 success: 1 741DROP TRIGGER trg_1; 742UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 743f_int2 = CAST(f_char1 AS SIGNED INT), 744f_charbig = 'just inserted' 745 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 746DELETE FROM t0_aux 747WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 748INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 749SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 750'just inserted' FROM t0_template 751WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 752CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 753BEGIN 754UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 755f_charbig = 'updated by trigger' 756 WHERE f_int1 = new.f_int1; 757END| 758UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 759WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 760 761# check trigger-3 success: 1 762DROP TRIGGER trg_1; 763UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 764f_int2 = CAST(f_char1 AS SIGNED INT), 765f_charbig = 'just inserted' 766 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 767DELETE FROM t0_aux 768WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 769INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 770SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 771'just inserted' FROM t0_template 772WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 773CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 774BEGIN 775UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 776f_charbig = 'updated by trigger' 777 WHERE f_int1 = - old.f_int1; 778END| 779UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 780WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 781 782# check trigger-4 success: 1 783DROP TRIGGER trg_1; 784UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 785f_int2 = CAST(f_char1 AS SIGNED INT), 786f_charbig = 'just inserted' 787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 788DELETE FROM t0_aux 789WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 790INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 791SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 792'just inserted' FROM t0_template 793WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 794CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 795BEGIN 796UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 797f_charbig = 'updated by trigger' 798 WHERE f_int1 = new.f_int1; 799END| 800UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 801WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 802 803# check trigger-5 success: 1 804DROP TRIGGER trg_1; 805UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 806f_int2 = CAST(f_char1 AS SIGNED INT), 807f_charbig = 'just inserted' 808 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 809DELETE FROM t0_aux 810WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 811INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 812SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 813'just inserted' FROM t0_template 814WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 815CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 816BEGIN 817UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 818f_charbig = 'updated by trigger' 819 WHERE f_int1 = - old.f_int1; 820END| 821UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 822WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 823 824# check trigger-6 success: 1 825DROP TRIGGER trg_1; 826UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 827f_int2 = CAST(f_char1 AS SIGNED INT), 828f_charbig = 'just inserted' 829 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 830DELETE FROM t0_aux 831WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 832INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 833SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 834'just inserted' FROM t0_template 835WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 836CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 837BEGIN 838UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 839f_charbig = 'updated by trigger' 840 WHERE f_int1 = - old.f_int1; 841END| 842DELETE FROM t0_aux 843WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 844 845# check trigger-7 success: 1 846DROP TRIGGER trg_1; 847UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 848f_int2 = CAST(f_char1 AS SIGNED INT), 849f_charbig = 'just inserted' 850 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 851DELETE FROM t0_aux 852WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 853INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 854SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 855'just inserted' FROM t0_template 856WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 857CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 858BEGIN 859UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 860f_charbig = 'updated by trigger' 861 WHERE f_int1 = - old.f_int1; 862END| 863DELETE FROM t0_aux 864WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 865 866# check trigger-8 success: 1 867DROP TRIGGER trg_1; 868UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 869f_int2 = CAST(f_char1 AS SIGNED INT), 870f_charbig = 'just inserted' 871 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 872DELETE FROM t0_aux 873WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 874DELETE FROM t1 875WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 876CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 877BEGIN 878SET new.f_int1 = old.f_int1 + @max_row, 879new.f_int2 = old.f_int2 - @max_row, 880new.f_charbig = '####updated per update trigger####'; 881END| 882UPDATE t1 883SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 884f_charbig = '####updated per update statement itself####'; 885 886# check trigger-9 success: 1 887DROP TRIGGER trg_2; 888UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 889f_int2 = CAST(f_char1 AS SIGNED INT), 890f_charbig = CONCAT('===',f_char1,'==='); 891CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 892BEGIN 893SET new.f_int1 = new.f_int1 + @max_row, 894new.f_int2 = new.f_int2 - @max_row, 895new.f_charbig = '####updated per update trigger####'; 896END| 897UPDATE t1 898SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 899f_charbig = '####updated per update statement itself####'; 900 901# check trigger-10 success: 1 902DROP TRIGGER trg_2; 903UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 904f_int2 = CAST(f_char1 AS SIGNED INT), 905f_charbig = CONCAT('===',f_char1,'==='); 906CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 907BEGIN 908SET new.f_int1 = @my_max1 + @counter, 909new.f_int2 = @my_min2 - @counter, 910new.f_charbig = '####updated per insert trigger####'; 911SET @counter = @counter + 1; 912END| 913SET @counter = 1; 914SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 916SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 917CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 918WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 919ORDER BY f_int1; 920DROP TRIGGER trg_3; 921 922# check trigger-11 success: 1 923DELETE FROM t1 924WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 925AND f_int2 <> CAST(f_char1 AS SIGNED INT) 926AND f_charbig = '####updated per insert trigger####'; 927CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 928BEGIN 929SET new.f_int1 = @my_max1 + @counter, 930new.f_int2 = @my_min2 - @counter, 931new.f_charbig = '####updated per insert trigger####'; 932SET @counter = @counter + 1; 933END| 934SET @counter = 1; 935SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 936INSERT INTO t1 (f_char1, f_char2, f_charbig) 937SELECT CAST(f_int1 AS CHAR), 938CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 939WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 940ORDER BY f_int1; 941DROP TRIGGER trg_3; 942 943# check trigger-12 success: 1 944DELETE FROM t1 945WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 946AND f_int2 <> CAST(f_char1 AS SIGNED INT) 947AND f_charbig = '####updated per insert trigger####'; 948ANALYZE TABLE t1; 949Table Op Msg_type Msg_text 950test.t1 analyze status OK 951CHECK TABLE t1 EXTENDED; 952Table Op Msg_type Msg_text 953test.t1 check status OK 954CHECKSUM TABLE t1 EXTENDED; 955Table Checksum 956test.t1 <some_value> 957OPTIMIZE TABLE t1; 958Table Op Msg_type Msg_text 959test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 960test.t1 optimize status OK 961# check layout success: 1 962REPAIR TABLE t1 EXTENDED; 963Table Op Msg_type Msg_text 964test.t1 repair status OK 965# check layout success: 1 966TRUNCATE t1; 967 968# check TRUNCATE success: 1 969# check layout success: 1 970# End usability test (inc/partition_check.inc) 971DROP TABLE t1; 972CREATE TABLE t1 ( 973f_int1 INTEGER, 974f_int2 INTEGER, 975f_char1 CHAR(20), 976f_char2 CHAR(20), 977f_charbig VARCHAR(1000) 978 979) 980PARTITION BY LIST(MOD(f_int1,4)) 981(PARTITION part_3 VALUES IN (-3), 982PARTITION part_2 VALUES IN (-2), 983PARTITION part_1 VALUES IN (-1), 984PARTITION part_N VALUES IN (NULL), 985PARTITION part0 VALUES IN (0), 986PARTITION part1 VALUES IN (1), 987PARTITION part2 VALUES IN (2), 988PARTITION part3 VALUES IN (3)); 989INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 990SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 991WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 992ALTER TABLE t1 MODIFY f_int2 BIGINT; 993INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 994SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 995WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 996# Start usability test (inc/partition_check.inc) 997create_command 998SHOW CREATE TABLE t1; 999Table Create Table 1000t1 CREATE TABLE `t1` ( 1001 `f_int1` int(11) DEFAULT NULL, 1002 `f_int2` bigint(20) DEFAULT NULL, 1003 `f_char1` char(20) DEFAULT NULL, 1004 `f_char2` char(20) DEFAULT NULL, 1005 `f_charbig` varchar(1000) DEFAULT NULL 1006) ENGINE=TokuDB DEFAULT CHARSET=latin1 1007/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 1008(PARTITION part_3 VALUES IN (-3) ENGINE = TokuDB, 1009 PARTITION part_2 VALUES IN (-2) ENGINE = TokuDB, 1010 PARTITION part_1 VALUES IN (-1) ENGINE = TokuDB, 1011 PARTITION part_N VALUES IN (NULL) ENGINE = TokuDB, 1012 PARTITION part0 VALUES IN (0) ENGINE = TokuDB, 1013 PARTITION part1 VALUES IN (1) ENGINE = TokuDB, 1014 PARTITION part2 VALUES IN (2) ENGINE = TokuDB, 1015 PARTITION part3 VALUES IN (3) ENGINE = TokuDB) */ 1016 1017# check prerequisites-1 success: 1 1018# check COUNT(*) success: 1 1019# check MIN/MAX(f_int1) success: 1 1020# check MIN/MAX(f_int2) success: 1 1021INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1022SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1023CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1024WHERE f_int1 IN (2,3); 1025# check prerequisites-3 success: 1 1026DELETE FROM t1 WHERE f_charbig = 'delete me'; 1027# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1028# check read via f_int1 success: 1 1029# check read via f_int2 success: 1 1030 1031# check multiple-1 success: 1 1032DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1033 1034# check multiple-2 success: 1 1035INSERT INTO t1 SELECT * FROM t0_template 1036WHERE MOD(f_int1,3) = 0; 1037 1038# check multiple-3 success: 1 1039UPDATE t1 SET f_int1 = f_int1 + @max_row 1040WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1041AND @max_row_div2 + @max_row_div4; 1042 1043# check multiple-4 success: 1 1044DELETE FROM t1 1045WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1046AND @max_row_div2 + @max_row_div4 + @max_row; 1047 1048# check multiple-5 success: 1 1049SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1050INSERT INTO t1 1051SET f_int1 = @cur_value , f_int2 = @cur_value, 1052f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1053f_charbig = '#SINGLE#'; 1054 1055# check single-1 success: 1 1056SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1057INSERT INTO t1 1058SET f_int1 = @cur_value , f_int2 = @cur_value, 1059f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1060f_charbig = '#SINGLE#'; 1061 1062# check single-2 success: 1 1063SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1064SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1065UPDATE t1 SET f_int1 = @cur_value2 1066WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1067 1068# check single-3 success: 1 1069SET @cur_value1= -1; 1070SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1071UPDATE t1 SET f_int1 = @cur_value1 1072WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1073 1074# check single-4 success: 1 1075SELECT MAX(f_int1) INTO @cur_value FROM t1; 1076DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1077 1078# check single-5 success: 1 1079DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1080 1081# check single-6 success: 1 1082INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1083 1084# check single-7 success: 1 1085DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 1086DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1087INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1088f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1089f_charbig = '#NULL#'; 1090INSERT INTO t1 1091SET f_int1 = NULL , f_int2 = -@max_row, 1092f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1093f_charbig = '#NULL#'; 1094# check null success: 1 1095 1096# check null-1 success: 1 1097UPDATE t1 SET f_int1 = -@max_row 1098WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1099AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1100 1101# check null-2 success: 1 1102UPDATE t1 SET f_int1 = NULL 1103WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1104AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1105 1106# check null-3 success: 1 1107DELETE FROM t1 1108WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1109AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1110 1111# check null-4 success: 1 1112DELETE FROM t1 1113WHERE f_int1 = 0 AND f_int2 = 0 1114AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1115AND f_charbig = '#NULL#'; 1116SET AUTOCOMMIT= 0; 1117INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1118SELECT f_int1, f_int1, '', '', 'was inserted' 1119FROM t0_template source_tab 1120WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1121 1122# check transactions-1 success: 1 1123COMMIT WORK; 1124 1125# check transactions-2 success: 1 1126ROLLBACK WORK; 1127 1128# check transactions-3 success: 1 1129DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1130COMMIT WORK; 1131ROLLBACK WORK; 1132 1133# check transactions-4 success: 1 1134INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1135SELECT f_int1, f_int1, '', '', 'was inserted' 1136FROM t0_template source_tab 1137WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1138 1139# check transactions-5 success: 1 1140ROLLBACK WORK; 1141 1142# check transactions-6 success: 1 1143# INFO: Storage engine used for t1 seems to be transactional. 1144COMMIT; 1145 1146# check transactions-7 success: 1 1147DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1148COMMIT WORK; 1149SET @@session.sql_mode = 'traditional'; 1150Warnings: 1151Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1152SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1153INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1154SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1155'', '', 'was inserted' FROM t0_template 1156WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1157ERROR 22012: Division by 0 1158COMMIT; 1159 1160# check transactions-8 success: 1 1161# INFO: Storage engine used for t1 seems to be able to revert 1162# changes made by the failing statement. 1163SET @@session.sql_mode = ''; 1164Warnings: 1165Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1166SET AUTOCOMMIT= 1; 1167DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1168COMMIT WORK; 1169UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1170 1171# check special-1 success: 1 1172UPDATE t1 SET f_charbig = ''; 1173 1174# check special-2 success: 1 1175UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1176INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1177SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1178WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1179INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1180SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1181'just inserted' FROM t0_template 1182WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1183CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1184BEGIN 1185UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1186f_charbig = 'updated by trigger' 1187 WHERE f_int1 = new.f_int1; 1188END| 1189INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1190SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1191WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1192 1193# check trigger-1 success: 1 1194DROP TRIGGER trg_1; 1195UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1196f_int2 = CAST(f_char1 AS SIGNED INT), 1197f_charbig = 'just inserted' 1198 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1199DELETE FROM t0_aux 1200WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1201INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1202SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1203'just inserted' FROM t0_template 1204WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1205CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1206BEGIN 1207UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1208f_charbig = 'updated by trigger' 1209 WHERE f_int1 = new.f_int1; 1210END| 1211INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1212SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1213WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1214 1215# check trigger-2 success: 1 1216DROP TRIGGER trg_1; 1217UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1218f_int2 = CAST(f_char1 AS SIGNED INT), 1219f_charbig = 'just inserted' 1220 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1221DELETE FROM t0_aux 1222WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1223INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1224SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1225'just inserted' FROM t0_template 1226WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1227CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1228BEGIN 1229UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1230f_charbig = 'updated by trigger' 1231 WHERE f_int1 = new.f_int1; 1232END| 1233UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1234WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1235 1236# check trigger-3 success: 1 1237DROP TRIGGER trg_1; 1238UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1239f_int2 = CAST(f_char1 AS SIGNED INT), 1240f_charbig = 'just inserted' 1241 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1242DELETE FROM t0_aux 1243WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1244INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1245SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1246'just inserted' FROM t0_template 1247WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1248CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1249BEGIN 1250UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1251f_charbig = 'updated by trigger' 1252 WHERE f_int1 = - old.f_int1; 1253END| 1254UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1255WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1256 1257# check trigger-4 success: 1 1258DROP TRIGGER trg_1; 1259UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1260f_int2 = CAST(f_char1 AS SIGNED INT), 1261f_charbig = 'just inserted' 1262 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1263DELETE FROM t0_aux 1264WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1265INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1266SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1267'just inserted' FROM t0_template 1268WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1269CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1270BEGIN 1271UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1272f_charbig = 'updated by trigger' 1273 WHERE f_int1 = new.f_int1; 1274END| 1275UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1276WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1277 1278# check trigger-5 success: 1 1279DROP TRIGGER trg_1; 1280UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1281f_int2 = CAST(f_char1 AS SIGNED INT), 1282f_charbig = 'just inserted' 1283 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1284DELETE FROM t0_aux 1285WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1286INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1287SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1288'just inserted' FROM t0_template 1289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1290CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1291BEGIN 1292UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1293f_charbig = 'updated by trigger' 1294 WHERE f_int1 = - old.f_int1; 1295END| 1296UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1297WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1298 1299# check trigger-6 success: 1 1300DROP TRIGGER trg_1; 1301UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1302f_int2 = CAST(f_char1 AS SIGNED INT), 1303f_charbig = 'just inserted' 1304 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1305DELETE FROM t0_aux 1306WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1307INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1308SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1309'just inserted' FROM t0_template 1310WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1311CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1312BEGIN 1313UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1314f_charbig = 'updated by trigger' 1315 WHERE f_int1 = - old.f_int1; 1316END| 1317DELETE FROM t0_aux 1318WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1319 1320# check trigger-7 success: 1 1321DROP TRIGGER trg_1; 1322UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1323f_int2 = CAST(f_char1 AS SIGNED INT), 1324f_charbig = 'just inserted' 1325 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1326DELETE FROM t0_aux 1327WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1328INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1329SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1330'just inserted' FROM t0_template 1331WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1332CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1333BEGIN 1334UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1335f_charbig = 'updated by trigger' 1336 WHERE f_int1 = - old.f_int1; 1337END| 1338DELETE FROM t0_aux 1339WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1340 1341# check trigger-8 success: 1 1342DROP TRIGGER trg_1; 1343UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1344f_int2 = CAST(f_char1 AS SIGNED INT), 1345f_charbig = 'just inserted' 1346 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1347DELETE FROM t0_aux 1348WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1349DELETE FROM t1 1350WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1351CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1352BEGIN 1353SET new.f_int1 = old.f_int1 + @max_row, 1354new.f_int2 = old.f_int2 - @max_row, 1355new.f_charbig = '####updated per update trigger####'; 1356END| 1357UPDATE t1 1358SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1359f_charbig = '####updated per update statement itself####'; 1360 1361# check trigger-9 success: 1 1362DROP TRIGGER trg_2; 1363UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1364f_int2 = CAST(f_char1 AS SIGNED INT), 1365f_charbig = CONCAT('===',f_char1,'==='); 1366CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1367BEGIN 1368SET new.f_int1 = new.f_int1 + @max_row, 1369new.f_int2 = new.f_int2 - @max_row, 1370new.f_charbig = '####updated per update trigger####'; 1371END| 1372UPDATE t1 1373SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1374f_charbig = '####updated per update statement itself####'; 1375 1376# check trigger-10 success: 1 1377DROP TRIGGER trg_2; 1378UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1379f_int2 = CAST(f_char1 AS SIGNED INT), 1380f_charbig = CONCAT('===',f_char1,'==='); 1381CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1382BEGIN 1383SET new.f_int1 = @my_max1 + @counter, 1384new.f_int2 = @my_min2 - @counter, 1385new.f_charbig = '####updated per insert trigger####'; 1386SET @counter = @counter + 1; 1387END| 1388SET @counter = 1; 1389SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1390INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1391SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1392CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1393WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1394ORDER BY f_int1; 1395DROP TRIGGER trg_3; 1396 1397# check trigger-11 success: 1 1398DELETE FROM t1 1399WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1400AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1401AND f_charbig = '####updated per insert trigger####'; 1402CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1403BEGIN 1404SET new.f_int1 = @my_max1 + @counter, 1405new.f_int2 = @my_min2 - @counter, 1406new.f_charbig = '####updated per insert trigger####'; 1407SET @counter = @counter + 1; 1408END| 1409SET @counter = 1; 1410SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1411INSERT INTO t1 (f_char1, f_char2, f_charbig) 1412SELECT CAST(f_int1 AS CHAR), 1413CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1414WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1415ORDER BY f_int1; 1416DROP TRIGGER trg_3; 1417 1418# check trigger-12 success: 1 1419DELETE FROM t1 1420WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1421AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1422AND f_charbig = '####updated per insert trigger####'; 1423ANALYZE TABLE t1; 1424Table Op Msg_type Msg_text 1425test.t1 analyze status OK 1426CHECK TABLE t1 EXTENDED; 1427Table Op Msg_type Msg_text 1428test.t1 check status OK 1429CHECKSUM TABLE t1 EXTENDED; 1430Table Checksum 1431test.t1 <some_value> 1432OPTIMIZE TABLE t1; 1433Table Op Msg_type Msg_text 1434test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 1435test.t1 optimize status OK 1436# check layout success: 1 1437REPAIR TABLE t1 EXTENDED; 1438Table Op Msg_type Msg_text 1439test.t1 repair status OK 1440# check layout success: 1 1441TRUNCATE t1; 1442 1443# check TRUNCATE success: 1 1444# check layout success: 1 1445# End usability test (inc/partition_check.inc) 1446DROP TABLE t1; 1447CREATE TABLE t1 ( 1448f_int1 INTEGER, 1449f_int2 INTEGER, 1450f_char1 CHAR(20), 1451f_char2 CHAR(20), 1452f_charbig VARCHAR(1000) 1453 1454) 1455PARTITION BY RANGE(f_int1) 1456(PARTITION parta VALUES LESS THAN (0), 1457PARTITION partb VALUES LESS THAN (5), 1458PARTITION partc VALUES LESS THAN (10), 1459PARTITION partd VALUES LESS THAN (10 + 5), 1460PARTITION parte VALUES LESS THAN (20), 1461PARTITION partf VALUES LESS THAN (2147483646)); 1462INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1463SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1464WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 1465ALTER TABLE t1 MODIFY f_int2 BIGINT; 1466INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1467SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1468WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 1469# Start usability test (inc/partition_check.inc) 1470create_command 1471SHOW CREATE TABLE t1; 1472Table Create Table 1473t1 CREATE TABLE `t1` ( 1474 `f_int1` int(11) DEFAULT NULL, 1475 `f_int2` bigint(20) DEFAULT NULL, 1476 `f_char1` char(20) DEFAULT NULL, 1477 `f_char2` char(20) DEFAULT NULL, 1478 `f_charbig` varchar(1000) DEFAULT NULL 1479) ENGINE=TokuDB DEFAULT CHARSET=latin1 1480/*!50100 PARTITION BY RANGE (f_int1) 1481(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 1482 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 1483 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 1484 PARTITION partd VALUES LESS THAN (15) ENGINE = TokuDB, 1485 PARTITION parte VALUES LESS THAN (20) ENGINE = TokuDB, 1486 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 1487 1488# check prerequisites-1 success: 1 1489# check COUNT(*) success: 1 1490# check MIN/MAX(f_int1) success: 1 1491# check MIN/MAX(f_int2) success: 1 1492INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1493SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1494CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1495WHERE f_int1 IN (2,3); 1496# check prerequisites-3 success: 1 1497DELETE FROM t1 WHERE f_charbig = 'delete me'; 1498# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1499# check read via f_int1 success: 1 1500# check read via f_int2 success: 1 1501 1502# check multiple-1 success: 1 1503DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1504 1505# check multiple-2 success: 1 1506INSERT INTO t1 SELECT * FROM t0_template 1507WHERE MOD(f_int1,3) = 0; 1508 1509# check multiple-3 success: 1 1510UPDATE t1 SET f_int1 = f_int1 + @max_row 1511WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1512AND @max_row_div2 + @max_row_div4; 1513 1514# check multiple-4 success: 1 1515DELETE FROM t1 1516WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1517AND @max_row_div2 + @max_row_div4 + @max_row; 1518 1519# check multiple-5 success: 1 1520SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1521INSERT INTO t1 1522SET f_int1 = @cur_value , f_int2 = @cur_value, 1523f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1524f_charbig = '#SINGLE#'; 1525 1526# check single-1 success: 1 1527SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1528INSERT INTO t1 1529SET f_int1 = @cur_value , f_int2 = @cur_value, 1530f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1531f_charbig = '#SINGLE#'; 1532 1533# check single-2 success: 1 1534SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 1535SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 1536UPDATE t1 SET f_int1 = @cur_value2 1537WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 1538 1539# check single-3 success: 1 1540SET @cur_value1= -1; 1541SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 1542UPDATE t1 SET f_int1 = @cur_value1 1543WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 1544 1545# check single-4 success: 1 1546SELECT MAX(f_int1) INTO @cur_value FROM t1; 1547DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 1548 1549# check single-5 success: 1 1550DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 1551 1552# check single-6 success: 1 1553INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 1554ERROR HY000: Table has no partition for value 2147483647 1555DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 1556INSERT t1 SET f_int1 = 0 , f_int2 = 0, 1557f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 1558f_charbig = '#NULL#'; 1559INSERT INTO t1 1560SET f_int1 = NULL , f_int2 = -@max_row, 1561f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 1562f_charbig = '#NULL#'; 1563# check null success: 1 1564 1565# check null-1 success: 1 1566UPDATE t1 SET f_int1 = -@max_row 1567WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1568AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1569 1570# check null-2 success: 1 1571UPDATE t1 SET f_int1 = NULL 1572WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1573AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1574 1575# check null-3 success: 1 1576DELETE FROM t1 1577WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 1578AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 1579 1580# check null-4 success: 1 1581DELETE FROM t1 1582WHERE f_int1 = 0 AND f_int2 = 0 1583AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 1584AND f_charbig = '#NULL#'; 1585SET AUTOCOMMIT= 0; 1586INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1587SELECT f_int1, f_int1, '', '', 'was inserted' 1588FROM t0_template source_tab 1589WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1590 1591# check transactions-1 success: 1 1592COMMIT WORK; 1593 1594# check transactions-2 success: 1 1595ROLLBACK WORK; 1596 1597# check transactions-3 success: 1 1598DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1599COMMIT WORK; 1600ROLLBACK WORK; 1601 1602# check transactions-4 success: 1 1603INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1604SELECT f_int1, f_int1, '', '', 'was inserted' 1605FROM t0_template source_tab 1606WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1607 1608# check transactions-5 success: 1 1609ROLLBACK WORK; 1610 1611# check transactions-6 success: 1 1612# INFO: Storage engine used for t1 seems to be transactional. 1613COMMIT; 1614 1615# check transactions-7 success: 1 1616DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1617COMMIT WORK; 1618SET @@session.sql_mode = 'traditional'; 1619Warnings: 1620Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1621SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 1622INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1623SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 1624'', '', 'was inserted' FROM t0_template 1625WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 1626ERROR 22012: Division by 0 1627COMMIT; 1628 1629# check transactions-8 success: 1 1630# INFO: Storage engine used for t1 seems to be able to revert 1631# changes made by the failing statement. 1632SET @@session.sql_mode = ''; 1633Warnings: 1634Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 1635SET AUTOCOMMIT= 1; 1636DELETE FROM t1 WHERE f_charbig = 'was inserted'; 1637COMMIT WORK; 1638UPDATE t1 SET f_charbig = REPEAT('b', 1000); 1639 1640# check special-1 success: 1 1641UPDATE t1 SET f_charbig = ''; 1642 1643# check special-2 success: 1 1644UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 1645INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1646SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 1647WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1648INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1649SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1650'just inserted' FROM t0_template 1651WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1652CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 1653BEGIN 1654UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1655f_charbig = 'updated by trigger' 1656 WHERE f_int1 = new.f_int1; 1657END| 1658INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1659SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1660WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1661 1662# check trigger-1 success: 1 1663DROP TRIGGER trg_1; 1664UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1665f_int2 = CAST(f_char1 AS SIGNED INT), 1666f_charbig = 'just inserted' 1667 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1668DELETE FROM t0_aux 1669WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1670INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1671SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1672'just inserted' FROM t0_template 1673WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1674CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 1675BEGIN 1676UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1677f_charbig = 'updated by trigger' 1678 WHERE f_int1 = new.f_int1; 1679END| 1680INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1681SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 1682WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1683 1684# check trigger-2 success: 1 1685DROP TRIGGER trg_1; 1686UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1687f_int2 = CAST(f_char1 AS SIGNED INT), 1688f_charbig = 'just inserted' 1689 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1690DELETE FROM t0_aux 1691WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1692INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1693SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1694'just inserted' FROM t0_template 1695WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1696CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1697BEGIN 1698UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1699f_charbig = 'updated by trigger' 1700 WHERE f_int1 = new.f_int1; 1701END| 1702UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1703WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1704 1705# check trigger-3 success: 1 1706DROP TRIGGER trg_1; 1707UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1708f_int2 = CAST(f_char1 AS SIGNED INT), 1709f_charbig = 'just inserted' 1710 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1711DELETE FROM t0_aux 1712WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1713INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1714SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1715'just inserted' FROM t0_template 1716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1717CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 1718BEGIN 1719UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1720f_charbig = 'updated by trigger' 1721 WHERE f_int1 = - old.f_int1; 1722END| 1723UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1724WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1725 1726# check trigger-4 success: 1 1727DROP TRIGGER trg_1; 1728UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1729f_int2 = CAST(f_char1 AS SIGNED INT), 1730f_charbig = 'just inserted' 1731 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1732DELETE FROM t0_aux 1733WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1734INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1735SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1736'just inserted' FROM t0_template 1737WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1738CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1739BEGIN 1740UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1741f_charbig = 'updated by trigger' 1742 WHERE f_int1 = new.f_int1; 1743END| 1744UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1745WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1746 1747# check trigger-5 success: 1 1748DROP TRIGGER trg_1; 1749UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1750f_int2 = CAST(f_char1 AS SIGNED INT), 1751f_charbig = 'just inserted' 1752 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1753DELETE FROM t0_aux 1754WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1755INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1756SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1757'just inserted' FROM t0_template 1758WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1759CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 1760BEGIN 1761UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1762f_charbig = 'updated by trigger' 1763 WHERE f_int1 = - old.f_int1; 1764END| 1765UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 1766WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1767 1768# check trigger-6 success: 1 1769DROP TRIGGER trg_1; 1770UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1771f_int2 = CAST(f_char1 AS SIGNED INT), 1772f_charbig = 'just inserted' 1773 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1774DELETE FROM t0_aux 1775WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1776INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1777SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1778'just inserted' FROM t0_template 1779WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1780CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 1781BEGIN 1782UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1783f_charbig = 'updated by trigger' 1784 WHERE f_int1 = - old.f_int1; 1785END| 1786DELETE FROM t0_aux 1787WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1788 1789# check trigger-7 success: 1 1790DROP TRIGGER trg_1; 1791UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1792f_int2 = CAST(f_char1 AS SIGNED INT), 1793f_charbig = 'just inserted' 1794 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1795DELETE FROM t0_aux 1796WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1797INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 1798SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 1799'just inserted' FROM t0_template 1800WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1801CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 1802BEGIN 1803UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 1804f_charbig = 'updated by trigger' 1805 WHERE f_int1 = - old.f_int1; 1806END| 1807DELETE FROM t0_aux 1808WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 1809 1810# check trigger-8 success: 1 1811DROP TRIGGER trg_1; 1812UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1813f_int2 = CAST(f_char1 AS SIGNED INT), 1814f_charbig = 'just inserted' 1815 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 1816DELETE FROM t0_aux 1817WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1818DELETE FROM t1 1819WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 1820CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1821BEGIN 1822SET new.f_int1 = old.f_int1 + @max_row, 1823new.f_int2 = old.f_int2 - @max_row, 1824new.f_charbig = '####updated per update trigger####'; 1825END| 1826UPDATE t1 1827SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1828f_charbig = '####updated per update statement itself####'; 1829 1830# check trigger-9 success: 1 1831DROP TRIGGER trg_2; 1832UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1833f_int2 = CAST(f_char1 AS SIGNED INT), 1834f_charbig = CONCAT('===',f_char1,'==='); 1835CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 1836BEGIN 1837SET new.f_int1 = new.f_int1 + @max_row, 1838new.f_int2 = new.f_int2 - @max_row, 1839new.f_charbig = '####updated per update trigger####'; 1840END| 1841UPDATE t1 1842SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 1843f_charbig = '####updated per update statement itself####'; 1844 1845# check trigger-10 success: 1 1846DROP TRIGGER trg_2; 1847UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 1848f_int2 = CAST(f_char1 AS SIGNED INT), 1849f_charbig = CONCAT('===',f_char1,'==='); 1850CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1851BEGIN 1852SET new.f_int1 = @my_max1 + @counter, 1853new.f_int2 = @my_min2 - @counter, 1854new.f_charbig = '####updated per insert trigger####'; 1855SET @counter = @counter + 1; 1856END| 1857SET @counter = 1; 1858SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1859INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1860SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1861CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1862WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1863ORDER BY f_int1; 1864DROP TRIGGER trg_3; 1865 1866# check trigger-11 success: 1 1867DELETE FROM t1 1868WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1869AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1870AND f_charbig = '####updated per insert trigger####'; 1871CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 1872BEGIN 1873SET new.f_int1 = @my_max1 + @counter, 1874new.f_int2 = @my_min2 - @counter, 1875new.f_charbig = '####updated per insert trigger####'; 1876SET @counter = @counter + 1; 1877END| 1878SET @counter = 1; 1879SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 1880INSERT INTO t1 (f_char1, f_char2, f_charbig) 1881SELECT CAST(f_int1 AS CHAR), 1882CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 1883WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 1884ORDER BY f_int1; 1885DROP TRIGGER trg_3; 1886 1887# check trigger-12 success: 1 1888DELETE FROM t1 1889WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 1890AND f_int2 <> CAST(f_char1 AS SIGNED INT) 1891AND f_charbig = '####updated per insert trigger####'; 1892ANALYZE TABLE t1; 1893Table Op Msg_type Msg_text 1894test.t1 analyze status OK 1895CHECK TABLE t1 EXTENDED; 1896Table Op Msg_type Msg_text 1897test.t1 check status OK 1898CHECKSUM TABLE t1 EXTENDED; 1899Table Checksum 1900test.t1 <some_value> 1901OPTIMIZE TABLE t1; 1902Table Op Msg_type Msg_text 1903test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 1904test.t1 optimize status OK 1905# check layout success: 1 1906REPAIR TABLE t1 EXTENDED; 1907Table Op Msg_type Msg_text 1908test.t1 repair status OK 1909# check layout success: 1 1910TRUNCATE t1; 1911 1912# check TRUNCATE success: 1 1913# check layout success: 1 1914# End usability test (inc/partition_check.inc) 1915DROP TABLE t1; 1916CREATE TABLE t1 ( 1917f_int1 INTEGER, 1918f_int2 INTEGER, 1919f_char1 CHAR(20), 1920f_char2 CHAR(20), 1921f_charbig VARCHAR(1000) 1922 1923) 1924PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 1925(PARTITION parta VALUES LESS THAN (0), 1926PARTITION partb VALUES LESS THAN (5), 1927PARTITION partc VALUES LESS THAN (10), 1928PARTITION partd VALUES LESS THAN (2147483646)); 1929INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1930SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1931WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 1932ALTER TABLE t1 MODIFY f_int2 BIGINT; 1933INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 1934SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 1935WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 1936# Start usability test (inc/partition_check.inc) 1937create_command 1938SHOW CREATE TABLE t1; 1939Table Create Table 1940t1 CREATE TABLE `t1` ( 1941 `f_int1` int(11) DEFAULT NULL, 1942 `f_int2` bigint(20) DEFAULT NULL, 1943 `f_char1` char(20) DEFAULT NULL, 1944 `f_char2` char(20) DEFAULT NULL, 1945 `f_charbig` varchar(1000) DEFAULT NULL 1946) ENGINE=TokuDB DEFAULT CHARSET=latin1 1947/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 1948SUBPARTITION BY HASH (f_int1) 1949SUBPARTITIONS 2 1950(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 1951 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 1952 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 1953 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 1954 1955# check prerequisites-1 success: 1 1956# check COUNT(*) success: 1 1957# check MIN/MAX(f_int1) success: 1 1958# check MIN/MAX(f_int2) success: 1 1959INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 1960SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 1961CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 1962WHERE f_int1 IN (2,3); 1963# check prerequisites-3 success: 1 1964DELETE FROM t1 WHERE f_charbig = 'delete me'; 1965# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 1966# check read via f_int1 success: 1 1967# check read via f_int2 success: 1 1968 1969# check multiple-1 success: 1 1970DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 1971 1972# check multiple-2 success: 1 1973INSERT INTO t1 SELECT * FROM t0_template 1974WHERE MOD(f_int1,3) = 0; 1975 1976# check multiple-3 success: 1 1977UPDATE t1 SET f_int1 = f_int1 + @max_row 1978WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 1979AND @max_row_div2 + @max_row_div4; 1980 1981# check multiple-4 success: 1 1982DELETE FROM t1 1983WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 1984AND @max_row_div2 + @max_row_div4 + @max_row; 1985 1986# check multiple-5 success: 1 1987SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 1988INSERT INTO t1 1989SET f_int1 = @cur_value , f_int2 = @cur_value, 1990f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1991f_charbig = '#SINGLE#'; 1992 1993# check single-1 success: 1 1994SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 1995INSERT INTO t1 1996SET f_int1 = @cur_value , f_int2 = @cur_value, 1997f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 1998f_charbig = '#SINGLE#'; 1999 2000# check single-2 success: 1 2001SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2002SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2003UPDATE t1 SET f_int1 = @cur_value2 2004WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2005 2006# check single-3 success: 1 2007SET @cur_value1= -1; 2008SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2009UPDATE t1 SET f_int1 = @cur_value1 2010WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2011 2012# check single-4 success: 1 2013SELECT MAX(f_int1) INTO @cur_value FROM t1; 2014DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2015 2016# check single-5 success: 1 2017DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2018 2019# check single-6 success: 1 2020INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2021 2022# check single-7 success: 1 2023DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 2024DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2025INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2026f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2027f_charbig = '#NULL#'; 2028INSERT INTO t1 2029SET f_int1 = NULL , f_int2 = -@max_row, 2030f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2031f_charbig = '#NULL#'; 2032# check null success: 1 2033 2034# check null-1 success: 1 2035UPDATE t1 SET f_int1 = -@max_row 2036WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2037AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2038 2039# check null-2 success: 1 2040UPDATE t1 SET f_int1 = NULL 2041WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2042AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2043 2044# check null-3 success: 1 2045DELETE FROM t1 2046WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2047AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2048 2049# check null-4 success: 1 2050DELETE FROM t1 2051WHERE f_int1 = 0 AND f_int2 = 0 2052AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2053AND f_charbig = '#NULL#'; 2054SET AUTOCOMMIT= 0; 2055INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2056SELECT f_int1, f_int1, '', '', 'was inserted' 2057FROM t0_template source_tab 2058WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2059 2060# check transactions-1 success: 1 2061COMMIT WORK; 2062 2063# check transactions-2 success: 1 2064ROLLBACK WORK; 2065 2066# check transactions-3 success: 1 2067DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2068COMMIT WORK; 2069ROLLBACK WORK; 2070 2071# check transactions-4 success: 1 2072INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2073SELECT f_int1, f_int1, '', '', 'was inserted' 2074FROM t0_template source_tab 2075WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2076 2077# check transactions-5 success: 1 2078ROLLBACK WORK; 2079 2080# check transactions-6 success: 1 2081# INFO: Storage engine used for t1 seems to be transactional. 2082COMMIT; 2083 2084# check transactions-7 success: 1 2085DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2086COMMIT WORK; 2087SET @@session.sql_mode = 'traditional'; 2088Warnings: 2089Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2090SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2091INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2092SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2093'', '', 'was inserted' FROM t0_template 2094WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2095ERROR 22012: Division by 0 2096COMMIT; 2097 2098# check transactions-8 success: 1 2099# INFO: Storage engine used for t1 seems to be able to revert 2100# changes made by the failing statement. 2101SET @@session.sql_mode = ''; 2102Warnings: 2103Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2104SET AUTOCOMMIT= 1; 2105DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2106COMMIT WORK; 2107UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2108 2109# check special-1 success: 1 2110UPDATE t1 SET f_charbig = ''; 2111 2112# check special-2 success: 1 2113UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2114INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2115SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2116WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2117INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2118SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2119'just inserted' FROM t0_template 2120WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2121CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2122BEGIN 2123UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2124f_charbig = 'updated by trigger' 2125 WHERE f_int1 = new.f_int1; 2126END| 2127INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2128SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2129WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2130 2131# check trigger-1 success: 1 2132DROP TRIGGER trg_1; 2133UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2134f_int2 = CAST(f_char1 AS SIGNED INT), 2135f_charbig = 'just inserted' 2136 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2137DELETE FROM t0_aux 2138WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2139INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2140SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2141'just inserted' FROM t0_template 2142WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2143CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2144BEGIN 2145UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2146f_charbig = 'updated by trigger' 2147 WHERE f_int1 = new.f_int1; 2148END| 2149INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2150SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2151WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2152 2153# check trigger-2 success: 1 2154DROP TRIGGER trg_1; 2155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2156f_int2 = CAST(f_char1 AS SIGNED INT), 2157f_charbig = 'just inserted' 2158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2159DELETE FROM t0_aux 2160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2163'just inserted' FROM t0_template 2164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2165CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2166BEGIN 2167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2168f_charbig = 'updated by trigger' 2169 WHERE f_int1 = new.f_int1; 2170END| 2171UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2173 2174# check trigger-3 success: 1 2175DROP TRIGGER trg_1; 2176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2177f_int2 = CAST(f_char1 AS SIGNED INT), 2178f_charbig = 'just inserted' 2179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2180DELETE FROM t0_aux 2181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2184'just inserted' FROM t0_template 2185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2186CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2187BEGIN 2188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2189f_charbig = 'updated by trigger' 2190 WHERE f_int1 = - old.f_int1; 2191END| 2192UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2194 2195# check trigger-4 success: 1 2196DROP TRIGGER trg_1; 2197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2198f_int2 = CAST(f_char1 AS SIGNED INT), 2199f_charbig = 'just inserted' 2200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2201DELETE FROM t0_aux 2202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2205'just inserted' FROM t0_template 2206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2207CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2208BEGIN 2209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2210f_charbig = 'updated by trigger' 2211 WHERE f_int1 = new.f_int1; 2212END| 2213UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2215 2216# check trigger-5 success: 1 2217DROP TRIGGER trg_1; 2218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2219f_int2 = CAST(f_char1 AS SIGNED INT), 2220f_charbig = 'just inserted' 2221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2222DELETE FROM t0_aux 2223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2226'just inserted' FROM t0_template 2227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2228CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2229BEGIN 2230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2231f_charbig = 'updated by trigger' 2232 WHERE f_int1 = - old.f_int1; 2233END| 2234UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2236 2237# check trigger-6 success: 1 2238DROP TRIGGER trg_1; 2239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2240f_int2 = CAST(f_char1 AS SIGNED INT), 2241f_charbig = 'just inserted' 2242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2243DELETE FROM t0_aux 2244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2245INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2246SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2247'just inserted' FROM t0_template 2248WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2249CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2250BEGIN 2251UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2252f_charbig = 'updated by trigger' 2253 WHERE f_int1 = - old.f_int1; 2254END| 2255DELETE FROM t0_aux 2256WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2257 2258# check trigger-7 success: 1 2259DROP TRIGGER trg_1; 2260UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2261f_int2 = CAST(f_char1 AS SIGNED INT), 2262f_charbig = 'just inserted' 2263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2264DELETE FROM t0_aux 2265WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2266INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2267SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2268'just inserted' FROM t0_template 2269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2270CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2271BEGIN 2272UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2273f_charbig = 'updated by trigger' 2274 WHERE f_int1 = - old.f_int1; 2275END| 2276DELETE FROM t0_aux 2277WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2278 2279# check trigger-8 success: 1 2280DROP TRIGGER trg_1; 2281UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2282f_int2 = CAST(f_char1 AS SIGNED INT), 2283f_charbig = 'just inserted' 2284 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2285DELETE FROM t0_aux 2286WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2287DELETE FROM t1 2288WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2289CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2290BEGIN 2291SET new.f_int1 = old.f_int1 + @max_row, 2292new.f_int2 = old.f_int2 - @max_row, 2293new.f_charbig = '####updated per update trigger####'; 2294END| 2295UPDATE t1 2296SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2297f_charbig = '####updated per update statement itself####'; 2298 2299# check trigger-9 success: 1 2300DROP TRIGGER trg_2; 2301UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2302f_int2 = CAST(f_char1 AS SIGNED INT), 2303f_charbig = CONCAT('===',f_char1,'==='); 2304CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2305BEGIN 2306SET new.f_int1 = new.f_int1 + @max_row, 2307new.f_int2 = new.f_int2 - @max_row, 2308new.f_charbig = '####updated per update trigger####'; 2309END| 2310UPDATE t1 2311SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2312f_charbig = '####updated per update statement itself####'; 2313 2314# check trigger-10 success: 1 2315DROP TRIGGER trg_2; 2316UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2317f_int2 = CAST(f_char1 AS SIGNED INT), 2318f_charbig = CONCAT('===',f_char1,'==='); 2319CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2320BEGIN 2321SET new.f_int1 = @my_max1 + @counter, 2322new.f_int2 = @my_min2 - @counter, 2323new.f_charbig = '####updated per insert trigger####'; 2324SET @counter = @counter + 1; 2325END| 2326SET @counter = 1; 2327SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2328INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2329SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2330CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2331WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2332ORDER BY f_int1; 2333DROP TRIGGER trg_3; 2334 2335# check trigger-11 success: 1 2336DELETE FROM t1 2337WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2338AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2339AND f_charbig = '####updated per insert trigger####'; 2340CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2341BEGIN 2342SET new.f_int1 = @my_max1 + @counter, 2343new.f_int2 = @my_min2 - @counter, 2344new.f_charbig = '####updated per insert trigger####'; 2345SET @counter = @counter + 1; 2346END| 2347SET @counter = 1; 2348SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2349INSERT INTO t1 (f_char1, f_char2, f_charbig) 2350SELECT CAST(f_int1 AS CHAR), 2351CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2352WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2353ORDER BY f_int1; 2354DROP TRIGGER trg_3; 2355 2356# check trigger-12 success: 1 2357DELETE FROM t1 2358WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2359AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2360AND f_charbig = '####updated per insert trigger####'; 2361ANALYZE TABLE t1; 2362Table Op Msg_type Msg_text 2363test.t1 analyze status OK 2364CHECK TABLE t1 EXTENDED; 2365Table Op Msg_type Msg_text 2366test.t1 check status OK 2367CHECKSUM TABLE t1 EXTENDED; 2368Table Checksum 2369test.t1 <some_value> 2370OPTIMIZE TABLE t1; 2371Table Op Msg_type Msg_text 2372test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 2373test.t1 optimize status OK 2374# check layout success: 1 2375REPAIR TABLE t1 EXTENDED; 2376Table Op Msg_type Msg_text 2377test.t1 repair status OK 2378# check layout success: 1 2379TRUNCATE t1; 2380 2381# check TRUNCATE success: 1 2382# check layout success: 1 2383# End usability test (inc/partition_check.inc) 2384DROP TABLE t1; 2385CREATE TABLE t1 ( 2386f_int1 INTEGER, 2387f_int2 INTEGER, 2388f_char1 CHAR(20), 2389f_char2 CHAR(20), 2390f_charbig VARCHAR(1000) 2391 2392) 2393PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 2394(PARTITION part1 VALUES LESS THAN (0) 2395(SUBPARTITION subpart11, SUBPARTITION subpart12), 2396PARTITION part2 VALUES LESS THAN (5) 2397(SUBPARTITION subpart21, SUBPARTITION subpart22), 2398PARTITION part3 VALUES LESS THAN (10) 2399(SUBPARTITION subpart31, SUBPARTITION subpart32), 2400PARTITION part4 VALUES LESS THAN (2147483646) 2401(SUBPARTITION subpart41, SUBPARTITION subpart42)); 2402INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2403SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2404WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 2405ALTER TABLE t1 MODIFY f_int2 BIGINT; 2406INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2407SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2408WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 2409# Start usability test (inc/partition_check.inc) 2410create_command 2411SHOW CREATE TABLE t1; 2412Table Create Table 2413t1 CREATE TABLE `t1` ( 2414 `f_int1` int(11) DEFAULT NULL, 2415 `f_int2` bigint(20) DEFAULT NULL, 2416 `f_char1` char(20) DEFAULT NULL, 2417 `f_char2` char(20) DEFAULT NULL, 2418 `f_charbig` varchar(1000) DEFAULT NULL 2419) ENGINE=TokuDB DEFAULT CHARSET=latin1 2420/*!50100 PARTITION BY RANGE (f_int1) 2421SUBPARTITION BY KEY (f_int1) 2422(PARTITION part1 VALUES LESS THAN (0) 2423 (SUBPARTITION subpart11 ENGINE = TokuDB, 2424 SUBPARTITION subpart12 ENGINE = TokuDB), 2425 PARTITION part2 VALUES LESS THAN (5) 2426 (SUBPARTITION subpart21 ENGINE = TokuDB, 2427 SUBPARTITION subpart22 ENGINE = TokuDB), 2428 PARTITION part3 VALUES LESS THAN (10) 2429 (SUBPARTITION subpart31 ENGINE = TokuDB, 2430 SUBPARTITION subpart32 ENGINE = TokuDB), 2431 PARTITION part4 VALUES LESS THAN (2147483646) 2432 (SUBPARTITION subpart41 ENGINE = TokuDB, 2433 SUBPARTITION subpart42 ENGINE = TokuDB)) */ 2434 2435# check prerequisites-1 success: 1 2436# check COUNT(*) success: 1 2437# check MIN/MAX(f_int1) success: 1 2438# check MIN/MAX(f_int2) success: 1 2439INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2440SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2441CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2442WHERE f_int1 IN (2,3); 2443# check prerequisites-3 success: 1 2444DELETE FROM t1 WHERE f_charbig = 'delete me'; 2445# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2446# check read via f_int1 success: 1 2447# check read via f_int2 success: 1 2448 2449# check multiple-1 success: 1 2450DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2451 2452# check multiple-2 success: 1 2453INSERT INTO t1 SELECT * FROM t0_template 2454WHERE MOD(f_int1,3) = 0; 2455 2456# check multiple-3 success: 1 2457UPDATE t1 SET f_int1 = f_int1 + @max_row 2458WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2459AND @max_row_div2 + @max_row_div4; 2460 2461# check multiple-4 success: 1 2462DELETE FROM t1 2463WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2464AND @max_row_div2 + @max_row_div4 + @max_row; 2465 2466# check multiple-5 success: 1 2467SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2468INSERT INTO t1 2469SET f_int1 = @cur_value , f_int2 = @cur_value, 2470f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2471f_charbig = '#SINGLE#'; 2472 2473# check single-1 success: 1 2474SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2475INSERT INTO t1 2476SET f_int1 = @cur_value , f_int2 = @cur_value, 2477f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2478f_charbig = '#SINGLE#'; 2479 2480# check single-2 success: 1 2481SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2482SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2483UPDATE t1 SET f_int1 = @cur_value2 2484WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2485 2486# check single-3 success: 1 2487SET @cur_value1= -1; 2488SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2489UPDATE t1 SET f_int1 = @cur_value1 2490WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2491 2492# check single-4 success: 1 2493SELECT MAX(f_int1) INTO @cur_value FROM t1; 2494DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2495 2496# check single-5 success: 1 2497DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2498 2499# check single-6 success: 1 2500INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2501ERROR HY000: Table has no partition for value 2147483647 2502DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2503INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2504f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2505f_charbig = '#NULL#'; 2506INSERT INTO t1 2507SET f_int1 = NULL , f_int2 = -@max_row, 2508f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2509f_charbig = '#NULL#'; 2510# check null success: 1 2511 2512# check null-1 success: 1 2513UPDATE t1 SET f_int1 = -@max_row 2514WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2515AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2516 2517# check null-2 success: 1 2518UPDATE t1 SET f_int1 = NULL 2519WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2520AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2521 2522# check null-3 success: 1 2523DELETE FROM t1 2524WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2525AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2526 2527# check null-4 success: 1 2528DELETE FROM t1 2529WHERE f_int1 = 0 AND f_int2 = 0 2530AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 2531AND f_charbig = '#NULL#'; 2532SET AUTOCOMMIT= 0; 2533INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2534SELECT f_int1, f_int1, '', '', 'was inserted' 2535FROM t0_template source_tab 2536WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2537 2538# check transactions-1 success: 1 2539COMMIT WORK; 2540 2541# check transactions-2 success: 1 2542ROLLBACK WORK; 2543 2544# check transactions-3 success: 1 2545DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2546COMMIT WORK; 2547ROLLBACK WORK; 2548 2549# check transactions-4 success: 1 2550INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2551SELECT f_int1, f_int1, '', '', 'was inserted' 2552FROM t0_template source_tab 2553WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2554 2555# check transactions-5 success: 1 2556ROLLBACK WORK; 2557 2558# check transactions-6 success: 1 2559# INFO: Storage engine used for t1 seems to be transactional. 2560COMMIT; 2561 2562# check transactions-7 success: 1 2563DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2564COMMIT WORK; 2565SET @@session.sql_mode = 'traditional'; 2566Warnings: 2567Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2568SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 2569INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2570SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 2571'', '', 'was inserted' FROM t0_template 2572WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 2573ERROR 22012: Division by 0 2574COMMIT; 2575 2576# check transactions-8 success: 1 2577# INFO: Storage engine used for t1 seems to be able to revert 2578# changes made by the failing statement. 2579SET @@session.sql_mode = ''; 2580Warnings: 2581Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 2582SET AUTOCOMMIT= 1; 2583DELETE FROM t1 WHERE f_charbig = 'was inserted'; 2584COMMIT WORK; 2585UPDATE t1 SET f_charbig = REPEAT('b', 1000); 2586 2587# check special-1 success: 1 2588UPDATE t1 SET f_charbig = ''; 2589 2590# check special-2 success: 1 2591UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 2592INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2593SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 2594WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2595INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2596SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2597'just inserted' FROM t0_template 2598WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2599CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 2600BEGIN 2601UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2602f_charbig = 'updated by trigger' 2603 WHERE f_int1 = new.f_int1; 2604END| 2605INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2606SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2607WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2608 2609# check trigger-1 success: 1 2610DROP TRIGGER trg_1; 2611UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2612f_int2 = CAST(f_char1 AS SIGNED INT), 2613f_charbig = 'just inserted' 2614 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2615DELETE FROM t0_aux 2616WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2617INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2618SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2619'just inserted' FROM t0_template 2620WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2621CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 2622BEGIN 2623UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2624f_charbig = 'updated by trigger' 2625 WHERE f_int1 = new.f_int1; 2626END| 2627INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2628SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 2629WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2630 2631# check trigger-2 success: 1 2632DROP TRIGGER trg_1; 2633UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2634f_int2 = CAST(f_char1 AS SIGNED INT), 2635f_charbig = 'just inserted' 2636 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2637DELETE FROM t0_aux 2638WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2640SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2641'just inserted' FROM t0_template 2642WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2643CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2644BEGIN 2645UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2646f_charbig = 'updated by trigger' 2647 WHERE f_int1 = new.f_int1; 2648END| 2649UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2650WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2651 2652# check trigger-3 success: 1 2653DROP TRIGGER trg_1; 2654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2655f_int2 = CAST(f_char1 AS SIGNED INT), 2656f_charbig = 'just inserted' 2657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2658DELETE FROM t0_aux 2659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2660INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2661SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2662'just inserted' FROM t0_template 2663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2664CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 2665BEGIN 2666UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2667f_charbig = 'updated by trigger' 2668 WHERE f_int1 = - old.f_int1; 2669END| 2670UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2671WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2672 2673# check trigger-4 success: 1 2674DROP TRIGGER trg_1; 2675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2676f_int2 = CAST(f_char1 AS SIGNED INT), 2677f_charbig = 'just inserted' 2678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2679DELETE FROM t0_aux 2680WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2681INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2682SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2683'just inserted' FROM t0_template 2684WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2685CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2686BEGIN 2687UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2688f_charbig = 'updated by trigger' 2689 WHERE f_int1 = new.f_int1; 2690END| 2691UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2692WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2693 2694# check trigger-5 success: 1 2695DROP TRIGGER trg_1; 2696UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2697f_int2 = CAST(f_char1 AS SIGNED INT), 2698f_charbig = 'just inserted' 2699 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2700DELETE FROM t0_aux 2701WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2703SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2704'just inserted' FROM t0_template 2705WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2706CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 2707BEGIN 2708UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2709f_charbig = 'updated by trigger' 2710 WHERE f_int1 = - old.f_int1; 2711END| 2712UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 2713WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2714 2715# check trigger-6 success: 1 2716DROP TRIGGER trg_1; 2717UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2718f_int2 = CAST(f_char1 AS SIGNED INT), 2719f_charbig = 'just inserted' 2720 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2721DELETE FROM t0_aux 2722WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2723INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2724SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2725'just inserted' FROM t0_template 2726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2727CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 2728BEGIN 2729UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2730f_charbig = 'updated by trigger' 2731 WHERE f_int1 = - old.f_int1; 2732END| 2733DELETE FROM t0_aux 2734WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2735 2736# check trigger-7 success: 1 2737DROP TRIGGER trg_1; 2738UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2739f_int2 = CAST(f_char1 AS SIGNED INT), 2740f_charbig = 'just inserted' 2741 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2742DELETE FROM t0_aux 2743WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2744INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 2745SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 2746'just inserted' FROM t0_template 2747WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2748CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 2749BEGIN 2750UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 2751f_charbig = 'updated by trigger' 2752 WHERE f_int1 = - old.f_int1; 2753END| 2754DELETE FROM t0_aux 2755WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 2756 2757# check trigger-8 success: 1 2758DROP TRIGGER trg_1; 2759UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2760f_int2 = CAST(f_char1 AS SIGNED INT), 2761f_charbig = 'just inserted' 2762 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 2763DELETE FROM t0_aux 2764WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2765DELETE FROM t1 2766WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 2767CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2768BEGIN 2769SET new.f_int1 = old.f_int1 + @max_row, 2770new.f_int2 = old.f_int2 - @max_row, 2771new.f_charbig = '####updated per update trigger####'; 2772END| 2773UPDATE t1 2774SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2775f_charbig = '####updated per update statement itself####'; 2776 2777# check trigger-9 success: 1 2778DROP TRIGGER trg_2; 2779UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2780f_int2 = CAST(f_char1 AS SIGNED INT), 2781f_charbig = CONCAT('===',f_char1,'==='); 2782CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 2783BEGIN 2784SET new.f_int1 = new.f_int1 + @max_row, 2785new.f_int2 = new.f_int2 - @max_row, 2786new.f_charbig = '####updated per update trigger####'; 2787END| 2788UPDATE t1 2789SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 2790f_charbig = '####updated per update statement itself####'; 2791 2792# check trigger-10 success: 1 2793DROP TRIGGER trg_2; 2794UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 2795f_int2 = CAST(f_char1 AS SIGNED INT), 2796f_charbig = CONCAT('===',f_char1,'==='); 2797CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2798BEGIN 2799SET new.f_int1 = @my_max1 + @counter, 2800new.f_int2 = @my_min2 - @counter, 2801new.f_charbig = '####updated per insert trigger####'; 2802SET @counter = @counter + 1; 2803END| 2804SET @counter = 1; 2805SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2806INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2807SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2808CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2809WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2810ORDER BY f_int1; 2811DROP TRIGGER trg_3; 2812 2813# check trigger-11 success: 1 2814DELETE FROM t1 2815WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2816AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2817AND f_charbig = '####updated per insert trigger####'; 2818CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 2819BEGIN 2820SET new.f_int1 = @my_max1 + @counter, 2821new.f_int2 = @my_min2 - @counter, 2822new.f_charbig = '####updated per insert trigger####'; 2823SET @counter = @counter + 1; 2824END| 2825SET @counter = 1; 2826SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 2827INSERT INTO t1 (f_char1, f_char2, f_charbig) 2828SELECT CAST(f_int1 AS CHAR), 2829CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 2830WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 2831ORDER BY f_int1; 2832DROP TRIGGER trg_3; 2833 2834# check trigger-12 success: 1 2835DELETE FROM t1 2836WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 2837AND f_int2 <> CAST(f_char1 AS SIGNED INT) 2838AND f_charbig = '####updated per insert trigger####'; 2839ANALYZE TABLE t1; 2840Table Op Msg_type Msg_text 2841test.t1 analyze status OK 2842CHECK TABLE t1 EXTENDED; 2843Table Op Msg_type Msg_text 2844test.t1 check status OK 2845CHECKSUM TABLE t1 EXTENDED; 2846Table Checksum 2847test.t1 <some_value> 2848OPTIMIZE TABLE t1; 2849Table Op Msg_type Msg_text 2850test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 2851test.t1 optimize status OK 2852# check layout success: 1 2853REPAIR TABLE t1 EXTENDED; 2854Table Op Msg_type Msg_text 2855test.t1 repair status OK 2856# check layout success: 1 2857TRUNCATE t1; 2858 2859# check TRUNCATE success: 1 2860# check layout success: 1 2861# End usability test (inc/partition_check.inc) 2862DROP TABLE t1; 2863CREATE TABLE t1 ( 2864f_int1 INTEGER, 2865f_int2 INTEGER, 2866f_char1 CHAR(20), 2867f_char2 CHAR(20), 2868f_charbig VARCHAR(1000) 2869 2870) 2871PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 2872(PARTITION part1 VALUES IN (0) 2873(SUBPARTITION sp11, SUBPARTITION sp12), 2874PARTITION part2 VALUES IN (1) 2875(SUBPARTITION sp21, SUBPARTITION sp22), 2876PARTITION part3 VALUES IN (2) 2877(SUBPARTITION sp31, SUBPARTITION sp32), 2878PARTITION part4 VALUES IN (NULL) 2879(SUBPARTITION sp41, SUBPARTITION sp42)); 2880INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2881SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2882WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 2883ALTER TABLE t1 MODIFY f_int2 BIGINT; 2884INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 2885SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 2886WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 2887# Start usability test (inc/partition_check.inc) 2888create_command 2889SHOW CREATE TABLE t1; 2890Table Create Table 2891t1 CREATE TABLE `t1` ( 2892 `f_int1` int(11) DEFAULT NULL, 2893 `f_int2` bigint(20) DEFAULT NULL, 2894 `f_char1` char(20) DEFAULT NULL, 2895 `f_char2` char(20) DEFAULT NULL, 2896 `f_charbig` varchar(1000) DEFAULT NULL 2897) ENGINE=TokuDB DEFAULT CHARSET=latin1 2898/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 2899SUBPARTITION BY HASH (f_int1 + 1) 2900(PARTITION part1 VALUES IN (0) 2901 (SUBPARTITION sp11 ENGINE = TokuDB, 2902 SUBPARTITION sp12 ENGINE = TokuDB), 2903 PARTITION part2 VALUES IN (1) 2904 (SUBPARTITION sp21 ENGINE = TokuDB, 2905 SUBPARTITION sp22 ENGINE = TokuDB), 2906 PARTITION part3 VALUES IN (2) 2907 (SUBPARTITION sp31 ENGINE = TokuDB, 2908 SUBPARTITION sp32 ENGINE = TokuDB), 2909 PARTITION part4 VALUES IN (NULL) 2910 (SUBPARTITION sp41 ENGINE = TokuDB, 2911 SUBPARTITION sp42 ENGINE = TokuDB)) */ 2912 2913# check prerequisites-1 success: 1 2914# check COUNT(*) success: 1 2915# check MIN/MAX(f_int1) success: 1 2916# check MIN/MAX(f_int2) success: 1 2917INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 2918SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 2919CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 2920WHERE f_int1 IN (2,3); 2921# check prerequisites-3 success: 1 2922DELETE FROM t1 WHERE f_charbig = 'delete me'; 2923# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 2924# check read via f_int1 success: 1 2925# check read via f_int2 success: 1 2926 2927# check multiple-1 success: 1 2928DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 2929 2930# check multiple-2 success: 1 2931INSERT INTO t1 SELECT * FROM t0_template 2932WHERE MOD(f_int1,3) = 0; 2933 2934# check multiple-3 success: 1 2935UPDATE t1 SET f_int1 = f_int1 + @max_row 2936WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 2937AND @max_row_div2 + @max_row_div4; 2938 2939# check multiple-4 success: 1 2940DELETE FROM t1 2941WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 2942AND @max_row_div2 + @max_row_div4 + @max_row; 2943 2944# check multiple-5 success: 1 2945SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 2946INSERT INTO t1 2947SET f_int1 = @cur_value , f_int2 = @cur_value, 2948f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2949f_charbig = '#SINGLE#'; 2950 2951# check single-1 success: 1 2952SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 2953INSERT INTO t1 2954SET f_int1 = @cur_value , f_int2 = @cur_value, 2955f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 2956f_charbig = '#SINGLE#'; 2957 2958# check single-2 success: 1 2959SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 2960SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 2961UPDATE t1 SET f_int1 = @cur_value2 2962WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 2963 2964# check single-3 success: 1 2965SET @cur_value1= -1; 2966SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 2967UPDATE t1 SET f_int1 = @cur_value1 2968WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 2969 2970# check single-4 success: 1 2971SELECT MAX(f_int1) INTO @cur_value FROM t1; 2972DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 2973 2974# check single-5 success: 1 2975DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 2976 2977# check single-6 success: 1 2978INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 2979 2980# check single-7 success: 1 2981DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 2982DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 2983INSERT t1 SET f_int1 = 0 , f_int2 = 0, 2984f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 2985f_charbig = '#NULL#'; 2986INSERT INTO t1 2987SET f_int1 = NULL , f_int2 = -@max_row, 2988f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 2989f_charbig = '#NULL#'; 2990# check null success: 1 2991 2992# check null-1 success: 1 2993UPDATE t1 SET f_int1 = -@max_row 2994WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 2995AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 2996 2997# check null-2 success: 1 2998UPDATE t1 SET f_int1 = NULL 2999WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3000AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3001 3002# check null-3 success: 1 3003DELETE FROM t1 3004WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3005AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3006 3007# check null-4 success: 1 3008DELETE FROM t1 3009WHERE f_int1 = 0 AND f_int2 = 0 3010AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3011AND f_charbig = '#NULL#'; 3012SET AUTOCOMMIT= 0; 3013INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3014SELECT f_int1, f_int1, '', '', 'was inserted' 3015FROM t0_template source_tab 3016WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3017 3018# check transactions-1 success: 1 3019COMMIT WORK; 3020 3021# check transactions-2 success: 1 3022ROLLBACK WORK; 3023 3024# check transactions-3 success: 1 3025DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3026COMMIT WORK; 3027ROLLBACK WORK; 3028 3029# check transactions-4 success: 1 3030INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3031SELECT f_int1, f_int1, '', '', 'was inserted' 3032FROM t0_template source_tab 3033WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3034 3035# check transactions-5 success: 1 3036ROLLBACK WORK; 3037 3038# check transactions-6 success: 1 3039# INFO: Storage engine used for t1 seems to be transactional. 3040COMMIT; 3041 3042# check transactions-7 success: 1 3043DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3044COMMIT WORK; 3045SET @@session.sql_mode = 'traditional'; 3046Warnings: 3047Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3048SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3049INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3050SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3051'', '', 'was inserted' FROM t0_template 3052WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3053ERROR 22012: Division by 0 3054COMMIT; 3055 3056# check transactions-8 success: 1 3057# INFO: Storage engine used for t1 seems to be able to revert 3058# changes made by the failing statement. 3059SET @@session.sql_mode = ''; 3060Warnings: 3061Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3062SET AUTOCOMMIT= 1; 3063DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3064COMMIT WORK; 3065UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3066 3067# check special-1 success: 1 3068UPDATE t1 SET f_charbig = ''; 3069 3070# check special-2 success: 1 3071UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3072INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3073SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3074WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3075INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3076SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3077'just inserted' FROM t0_template 3078WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3079CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 3080BEGIN 3081UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3082f_charbig = 'updated by trigger' 3083 WHERE f_int1 = new.f_int1; 3084END| 3085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3086SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3088 3089# check trigger-1 success: 1 3090DROP TRIGGER trg_1; 3091UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3092f_int2 = CAST(f_char1 AS SIGNED INT), 3093f_charbig = 'just inserted' 3094 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3095DELETE FROM t0_aux 3096WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3097INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3098SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3099'just inserted' FROM t0_template 3100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3101CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3102BEGIN 3103UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3104f_charbig = 'updated by trigger' 3105 WHERE f_int1 = new.f_int1; 3106END| 3107INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3108SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3109WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3110 3111# check trigger-2 success: 1 3112DROP TRIGGER trg_1; 3113UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3114f_int2 = CAST(f_char1 AS SIGNED INT), 3115f_charbig = 'just inserted' 3116 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3117DELETE FROM t0_aux 3118WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3119INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3120SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3121'just inserted' FROM t0_template 3122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3123CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3124BEGIN 3125UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3126f_charbig = 'updated by trigger' 3127 WHERE f_int1 = new.f_int1; 3128END| 3129UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3130WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3131 3132# check trigger-3 success: 1 3133DROP TRIGGER trg_1; 3134UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3135f_int2 = CAST(f_char1 AS SIGNED INT), 3136f_charbig = 'just inserted' 3137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3138DELETE FROM t0_aux 3139WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3142'just inserted' FROM t0_template 3143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3144CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3145BEGIN 3146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3147f_charbig = 'updated by trigger' 3148 WHERE f_int1 = - old.f_int1; 3149END| 3150UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3151WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3152 3153# check trigger-4 success: 1 3154DROP TRIGGER trg_1; 3155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3156f_int2 = CAST(f_char1 AS SIGNED INT), 3157f_charbig = 'just inserted' 3158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3159DELETE FROM t0_aux 3160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3163'just inserted' FROM t0_template 3164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3165CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3166BEGIN 3167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3168f_charbig = 'updated by trigger' 3169 WHERE f_int1 = new.f_int1; 3170END| 3171UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3173 3174# check trigger-5 success: 1 3175DROP TRIGGER trg_1; 3176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3177f_int2 = CAST(f_char1 AS SIGNED INT), 3178f_charbig = 'just inserted' 3179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3180DELETE FROM t0_aux 3181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3184'just inserted' FROM t0_template 3185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3186CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3187BEGIN 3188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3189f_charbig = 'updated by trigger' 3190 WHERE f_int1 = - old.f_int1; 3191END| 3192UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3194 3195# check trigger-6 success: 1 3196DROP TRIGGER trg_1; 3197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3198f_int2 = CAST(f_char1 AS SIGNED INT), 3199f_charbig = 'just inserted' 3200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3201DELETE FROM t0_aux 3202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3205'just inserted' FROM t0_template 3206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3207CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3208BEGIN 3209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3210f_charbig = 'updated by trigger' 3211 WHERE f_int1 = - old.f_int1; 3212END| 3213DELETE FROM t0_aux 3214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3215 3216# check trigger-7 success: 1 3217DROP TRIGGER trg_1; 3218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3219f_int2 = CAST(f_char1 AS SIGNED INT), 3220f_charbig = 'just inserted' 3221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3222DELETE FROM t0_aux 3223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3226'just inserted' FROM t0_template 3227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3228CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3229BEGIN 3230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3231f_charbig = 'updated by trigger' 3232 WHERE f_int1 = - old.f_int1; 3233END| 3234DELETE FROM t0_aux 3235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3236 3237# check trigger-8 success: 1 3238DROP TRIGGER trg_1; 3239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3240f_int2 = CAST(f_char1 AS SIGNED INT), 3241f_charbig = 'just inserted' 3242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3243DELETE FROM t0_aux 3244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3245DELETE FROM t1 3246WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3247CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3248BEGIN 3249SET new.f_int1 = old.f_int1 + @max_row, 3250new.f_int2 = old.f_int2 - @max_row, 3251new.f_charbig = '####updated per update trigger####'; 3252END| 3253UPDATE t1 3254SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3255f_charbig = '####updated per update statement itself####'; 3256 3257# check trigger-9 success: 1 3258DROP TRIGGER trg_2; 3259UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3260f_int2 = CAST(f_char1 AS SIGNED INT), 3261f_charbig = CONCAT('===',f_char1,'==='); 3262CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3263BEGIN 3264SET new.f_int1 = new.f_int1 + @max_row, 3265new.f_int2 = new.f_int2 - @max_row, 3266new.f_charbig = '####updated per update trigger####'; 3267END| 3268UPDATE t1 3269SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3270f_charbig = '####updated per update statement itself####'; 3271 3272# check trigger-10 success: 1 3273DROP TRIGGER trg_2; 3274UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3275f_int2 = CAST(f_char1 AS SIGNED INT), 3276f_charbig = CONCAT('===',f_char1,'==='); 3277CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3278BEGIN 3279SET new.f_int1 = @my_max1 + @counter, 3280new.f_int2 = @my_min2 - @counter, 3281new.f_charbig = '####updated per insert trigger####'; 3282SET @counter = @counter + 1; 3283END| 3284SET @counter = 1; 3285SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3286INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3287SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3288CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3289WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3290ORDER BY f_int1; 3291DROP TRIGGER trg_3; 3292 3293# check trigger-11 success: 1 3294DELETE FROM t1 3295WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3296AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3297AND f_charbig = '####updated per insert trigger####'; 3298CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3299BEGIN 3300SET new.f_int1 = @my_max1 + @counter, 3301new.f_int2 = @my_min2 - @counter, 3302new.f_charbig = '####updated per insert trigger####'; 3303SET @counter = @counter + 1; 3304END| 3305SET @counter = 1; 3306SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3307INSERT INTO t1 (f_char1, f_char2, f_charbig) 3308SELECT CAST(f_int1 AS CHAR), 3309CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3310WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3311ORDER BY f_int1; 3312DROP TRIGGER trg_3; 3313 3314# check trigger-12 success: 1 3315DELETE FROM t1 3316WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3317AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3318AND f_charbig = '####updated per insert trigger####'; 3319ANALYZE TABLE t1; 3320Table Op Msg_type Msg_text 3321test.t1 analyze status OK 3322CHECK TABLE t1 EXTENDED; 3323Table Op Msg_type Msg_text 3324test.t1 check status OK 3325CHECKSUM TABLE t1 EXTENDED; 3326Table Checksum 3327test.t1 <some_value> 3328OPTIMIZE TABLE t1; 3329Table Op Msg_type Msg_text 3330test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 3331test.t1 optimize status OK 3332# check layout success: 1 3333REPAIR TABLE t1 EXTENDED; 3334Table Op Msg_type Msg_text 3335test.t1 repair status OK 3336# check layout success: 1 3337TRUNCATE t1; 3338 3339# check TRUNCATE success: 1 3340# check layout success: 1 3341# End usability test (inc/partition_check.inc) 3342DROP TABLE t1; 3343CREATE TABLE t1 ( 3344f_int1 INTEGER, 3345f_int2 INTEGER, 3346f_char1 CHAR(20), 3347f_char2 CHAR(20), 3348f_charbig VARCHAR(1000) 3349 3350) 3351PARTITION BY LIST(ABS(MOD(f_int1,2))) 3352SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 3353(PARTITION part1 VALUES IN (0), 3354PARTITION part2 VALUES IN (1), 3355PARTITION part3 VALUES IN (NULL)); 3356INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3357SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3358WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 3359ALTER TABLE t1 MODIFY f_int2 BIGINT; 3360INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3361SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3362WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 3363# Start usability test (inc/partition_check.inc) 3364create_command 3365SHOW CREATE TABLE t1; 3366Table Create Table 3367t1 CREATE TABLE `t1` ( 3368 `f_int1` int(11) DEFAULT NULL, 3369 `f_int2` bigint(20) DEFAULT NULL, 3370 `f_char1` char(20) DEFAULT NULL, 3371 `f_char2` char(20) DEFAULT NULL, 3372 `f_charbig` varchar(1000) DEFAULT NULL 3373) ENGINE=TokuDB DEFAULT CHARSET=latin1 3374/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 3375SUBPARTITION BY KEY (f_int1) 3376SUBPARTITIONS 3 3377(PARTITION part1 VALUES IN (0) ENGINE = TokuDB, 3378 PARTITION part2 VALUES IN (1) ENGINE = TokuDB, 3379 PARTITION part3 VALUES IN (NULL) ENGINE = TokuDB) */ 3380 3381# check prerequisites-1 success: 1 3382# check COUNT(*) success: 1 3383# check MIN/MAX(f_int1) success: 1 3384# check MIN/MAX(f_int2) success: 1 3385INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3386SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3387CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3388WHERE f_int1 IN (2,3); 3389# check prerequisites-3 success: 1 3390DELETE FROM t1 WHERE f_charbig = 'delete me'; 3391# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE 3392# check read via f_int1 success: 1 3393# check read via f_int2 success: 1 3394 3395# check multiple-1 success: 1 3396DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3397 3398# check multiple-2 success: 1 3399INSERT INTO t1 SELECT * FROM t0_template 3400WHERE MOD(f_int1,3) = 0; 3401 3402# check multiple-3 success: 1 3403UPDATE t1 SET f_int1 = f_int1 + @max_row 3404WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3405AND @max_row_div2 + @max_row_div4; 3406 3407# check multiple-4 success: 1 3408DELETE FROM t1 3409WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3410AND @max_row_div2 + @max_row_div4 + @max_row; 3411 3412# check multiple-5 success: 1 3413SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3414INSERT INTO t1 3415SET f_int1 = @cur_value , f_int2 = @cur_value, 3416f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3417f_charbig = '#SINGLE#'; 3418 3419# check single-1 success: 1 3420SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3421INSERT INTO t1 3422SET f_int1 = @cur_value , f_int2 = @cur_value, 3423f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3424f_charbig = '#SINGLE#'; 3425 3426# check single-2 success: 1 3427SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3428SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3429UPDATE t1 SET f_int1 = @cur_value2 3430WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3431 3432# check single-3 success: 1 3433SET @cur_value1= -1; 3434SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3435UPDATE t1 SET f_int1 = @cur_value1 3436WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3437 3438# check single-4 success: 1 3439SELECT MAX(f_int1) INTO @cur_value FROM t1; 3440DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3441 3442# check single-5 success: 1 3443DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3444 3445# check single-6 success: 1 3446INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3447 3448# check single-7 success: 1 3449DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3450DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3451INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3452f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3453f_charbig = '#NULL#'; 3454INSERT INTO t1 3455SET f_int1 = NULL , f_int2 = -@max_row, 3456f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3457f_charbig = '#NULL#'; 3458# check null success: 1 3459 3460# check null-1 success: 1 3461UPDATE t1 SET f_int1 = -@max_row 3462WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3463AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3464 3465# check null-2 success: 1 3466UPDATE t1 SET f_int1 = NULL 3467WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3468AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3469 3470# check null-3 success: 1 3471DELETE FROM t1 3472WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 3473AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 3474 3475# check null-4 success: 1 3476DELETE FROM t1 3477WHERE f_int1 = 0 AND f_int2 = 0 3478AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3479AND f_charbig = '#NULL#'; 3480SET AUTOCOMMIT= 0; 3481INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3482SELECT f_int1, f_int1, '', '', 'was inserted' 3483FROM t0_template source_tab 3484WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3485 3486# check transactions-1 success: 1 3487COMMIT WORK; 3488 3489# check transactions-2 success: 1 3490ROLLBACK WORK; 3491 3492# check transactions-3 success: 1 3493DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3494COMMIT WORK; 3495ROLLBACK WORK; 3496 3497# check transactions-4 success: 1 3498INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3499SELECT f_int1, f_int1, '', '', 'was inserted' 3500FROM t0_template source_tab 3501WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3502 3503# check transactions-5 success: 1 3504ROLLBACK WORK; 3505 3506# check transactions-6 success: 1 3507# INFO: Storage engine used for t1 seems to be transactional. 3508COMMIT; 3509 3510# check transactions-7 success: 1 3511DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3512COMMIT WORK; 3513SET @@session.sql_mode = 'traditional'; 3514Warnings: 3515Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3516SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 3517INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3518SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 3519'', '', 'was inserted' FROM t0_template 3520WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3521ERROR 22012: Division by 0 3522COMMIT; 3523 3524# check transactions-8 success: 1 3525# INFO: Storage engine used for t1 seems to be able to revert 3526# changes made by the failing statement. 3527SET @@session.sql_mode = ''; 3528Warnings: 3529Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 3530SET AUTOCOMMIT= 1; 3531DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3532COMMIT WORK; 3533UPDATE t1 SET f_charbig = REPEAT('b', 1000); 3534 3535# check special-1 success: 1 3536UPDATE t1 SET f_charbig = ''; 3537 3538# check special-2 success: 1 3539UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 3540INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3541SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 3542WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3543INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3544SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3545'just inserted' FROM t0_template 3546WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3547CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 3548BEGIN 3549UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3550f_charbig = 'updated by trigger' 3551 WHERE f_int1 = new.f_int1; 3552END| 3553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3554SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3555WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3556 3557# check trigger-1 success: 1 3558DROP TRIGGER trg_1; 3559UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3560f_int2 = CAST(f_char1 AS SIGNED INT), 3561f_charbig = 'just inserted' 3562 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3563DELETE FROM t0_aux 3564WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3565INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3566SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3567'just inserted' FROM t0_template 3568WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3569CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 3570BEGIN 3571UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3572f_charbig = 'updated by trigger' 3573 WHERE f_int1 = new.f_int1; 3574END| 3575INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3576SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 3577WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3578 3579# check trigger-2 success: 1 3580DROP TRIGGER trg_1; 3581UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3582f_int2 = CAST(f_char1 AS SIGNED INT), 3583f_charbig = 'just inserted' 3584 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3585DELETE FROM t0_aux 3586WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3587INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3588SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3589'just inserted' FROM t0_template 3590WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3591CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3592BEGIN 3593UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3594f_charbig = 'updated by trigger' 3595 WHERE f_int1 = new.f_int1; 3596END| 3597UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3598WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3599 3600# check trigger-3 success: 1 3601DROP TRIGGER trg_1; 3602UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3603f_int2 = CAST(f_char1 AS SIGNED INT), 3604f_charbig = 'just inserted' 3605 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3606DELETE FROM t0_aux 3607WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3608INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3609SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3610'just inserted' FROM t0_template 3611WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3612CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 3613BEGIN 3614UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3615f_charbig = 'updated by trigger' 3616 WHERE f_int1 = - old.f_int1; 3617END| 3618UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3619WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3620 3621# check trigger-4 success: 1 3622DROP TRIGGER trg_1; 3623UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3624f_int2 = CAST(f_char1 AS SIGNED INT), 3625f_charbig = 'just inserted' 3626 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3627DELETE FROM t0_aux 3628WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3629INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3630SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3631'just inserted' FROM t0_template 3632WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3633CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3634BEGIN 3635UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3636f_charbig = 'updated by trigger' 3637 WHERE f_int1 = new.f_int1; 3638END| 3639UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3640WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3641 3642# check trigger-5 success: 1 3643DROP TRIGGER trg_1; 3644UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3645f_int2 = CAST(f_char1 AS SIGNED INT), 3646f_charbig = 'just inserted' 3647 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3648DELETE FROM t0_aux 3649WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3650INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3651SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3652'just inserted' FROM t0_template 3653WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3654CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 3655BEGIN 3656UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3657f_charbig = 'updated by trigger' 3658 WHERE f_int1 = - old.f_int1; 3659END| 3660UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 3661WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3662 3663# check trigger-6 success: 1 3664DROP TRIGGER trg_1; 3665UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3666f_int2 = CAST(f_char1 AS SIGNED INT), 3667f_charbig = 'just inserted' 3668 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3669DELETE FROM t0_aux 3670WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3671INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3672SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3673'just inserted' FROM t0_template 3674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3675CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 3676BEGIN 3677UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3678f_charbig = 'updated by trigger' 3679 WHERE f_int1 = - old.f_int1; 3680END| 3681DELETE FROM t0_aux 3682WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3683 3684# check trigger-7 success: 1 3685DROP TRIGGER trg_1; 3686UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3687f_int2 = CAST(f_char1 AS SIGNED INT), 3688f_charbig = 'just inserted' 3689 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3690DELETE FROM t0_aux 3691WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3692INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 3693SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 3694'just inserted' FROM t0_template 3695WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3696CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 3697BEGIN 3698UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 3699f_charbig = 'updated by trigger' 3700 WHERE f_int1 = - old.f_int1; 3701END| 3702DELETE FROM t0_aux 3703WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 3704 3705# check trigger-8 success: 1 3706DROP TRIGGER trg_1; 3707UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3708f_int2 = CAST(f_char1 AS SIGNED INT), 3709f_charbig = 'just inserted' 3710 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 3711DELETE FROM t0_aux 3712WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3713DELETE FROM t1 3714WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 3715CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3716BEGIN 3717SET new.f_int1 = old.f_int1 + @max_row, 3718new.f_int2 = old.f_int2 - @max_row, 3719new.f_charbig = '####updated per update trigger####'; 3720END| 3721UPDATE t1 3722SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3723f_charbig = '####updated per update statement itself####'; 3724 3725# check trigger-9 success: 1 3726DROP TRIGGER trg_2; 3727UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3728f_int2 = CAST(f_char1 AS SIGNED INT), 3729f_charbig = CONCAT('===',f_char1,'==='); 3730CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 3731BEGIN 3732SET new.f_int1 = new.f_int1 + @max_row, 3733new.f_int2 = new.f_int2 - @max_row, 3734new.f_charbig = '####updated per update trigger####'; 3735END| 3736UPDATE t1 3737SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 3738f_charbig = '####updated per update statement itself####'; 3739 3740# check trigger-10 success: 1 3741DROP TRIGGER trg_2; 3742UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3743f_int2 = CAST(f_char1 AS SIGNED INT), 3744f_charbig = CONCAT('===',f_char1,'==='); 3745CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3746BEGIN 3747SET new.f_int1 = @my_max1 + @counter, 3748new.f_int2 = @my_min2 - @counter, 3749new.f_charbig = '####updated per insert trigger####'; 3750SET @counter = @counter + 1; 3751END| 3752SET @counter = 1; 3753SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3754INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3755SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3756CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3757WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3758ORDER BY f_int1; 3759DROP TRIGGER trg_3; 3760 3761# check trigger-11 success: 1 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####'; 3766CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 3767BEGIN 3768SET new.f_int1 = @my_max1 + @counter, 3769new.f_int2 = @my_min2 - @counter, 3770new.f_charbig = '####updated per insert trigger####'; 3771SET @counter = @counter + 1; 3772END| 3773SET @counter = 1; 3774SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 3775INSERT INTO t1 (f_char1, f_char2, f_charbig) 3776SELECT CAST(f_int1 AS CHAR), 3777CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 3778WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 3779ORDER BY f_int1; 3780DROP TRIGGER trg_3; 3781 3782# check trigger-12 success: 1 3783DELETE FROM t1 3784WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 3785AND f_int2 <> CAST(f_char1 AS SIGNED INT) 3786AND f_charbig = '####updated per insert trigger####'; 3787ANALYZE TABLE t1; 3788Table Op Msg_type Msg_text 3789test.t1 analyze status OK 3790CHECK TABLE t1 EXTENDED; 3791Table Op Msg_type Msg_text 3792test.t1 check status OK 3793CHECKSUM TABLE t1 EXTENDED; 3794Table Checksum 3795test.t1 <some_value> 3796OPTIMIZE TABLE t1; 3797Table Op Msg_type Msg_text 3798test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 3799test.t1 optimize status OK 3800# check layout success: 1 3801REPAIR TABLE t1 EXTENDED; 3802Table Op Msg_type Msg_text 3803test.t1 repair status OK 3804# check layout success: 1 3805TRUNCATE t1; 3806 3807# check TRUNCATE success: 1 3808# check layout success: 1 3809# End usability test (inc/partition_check.inc) 3810DROP TABLE t1; 3811# 1.1.2 PRIMARY KEY exists 3812DROP TABLE IF EXISTS t1; 3813CREATE TABLE t1 ( 3814f_int1 INTEGER, 3815f_int2 INTEGER, 3816f_char1 CHAR(20), 3817f_char2 CHAR(20), 3818f_charbig VARCHAR(1000) 3819, PRIMARY KEY (f_int1,f_int2) 3820) 3821PARTITION BY HASH(f_int1) PARTITIONS 2; 3822INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3823SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3824WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 3825ALTER TABLE t1 MODIFY f_int2 BIGINT; 3826INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 3827SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 3828WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 3829# Start usability test (inc/partition_check.inc) 3830create_command 3831SHOW CREATE TABLE t1; 3832Table Create Table 3833t1 CREATE TABLE `t1` ( 3834 `f_int1` int(11) NOT NULL, 3835 `f_int2` bigint(20) NOT NULL, 3836 `f_char1` char(20) DEFAULT NULL, 3837 `f_char2` char(20) DEFAULT NULL, 3838 `f_charbig` varchar(1000) DEFAULT NULL, 3839 PRIMARY KEY (`f_int1`,`f_int2`) 3840) ENGINE=TokuDB DEFAULT CHARSET=latin1 3841/*!50100 PARTITION BY HASH (f_int1) 3842PARTITIONS 2 */ 3843 3844# check prerequisites-1 success: 1 3845# check COUNT(*) success: 1 3846# check MIN/MAX(f_int1) success: 1 3847# check MIN/MAX(f_int2) success: 1 3848INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3849SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 3850CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 3851WHERE f_int1 IN (2,3); 3852ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 3853# check prerequisites-3 success: 1 3854# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 3855INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3856SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 3857CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 3858WHERE f_int1 IN (2,3); 3859DELETE FROM t1 WHERE f_charbig = 'delete me'; 3860INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3861SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 3862CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 3863WHERE f_int1 IN (2,3); 3864DELETE FROM t1 WHERE f_charbig = 'delete me'; 3865# check read via f_int1 success: 1 3866# check read via f_int2 success: 1 3867 3868# check multiple-1 success: 1 3869DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 3870 3871# check multiple-2 success: 1 3872INSERT INTO t1 SELECT * FROM t0_template 3873WHERE MOD(f_int1,3) = 0; 3874 3875# check multiple-3 success: 1 3876UPDATE t1 SET f_int1 = f_int1 + @max_row 3877WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 3878AND @max_row_div2 + @max_row_div4; 3879 3880# check multiple-4 success: 1 3881DELETE FROM t1 3882WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 3883AND @max_row_div2 + @max_row_div4 + @max_row; 3884 3885# check multiple-5 success: 1 3886SELECT COUNT(*) INTO @try_count FROM t0_template 3887WHERE MOD(f_int1,3) = 0 3888AND f_int1 BETWEEN @max_row_div2 AND @max_row; 3889SELECT COUNT(*) INTO @clash_count 3890FROM t1 INNER JOIN t0_template USING(f_int1) 3891WHERE MOD(f_int1,3) = 0 3892AND f_int1 BETWEEN @max_row_div2 AND @max_row; 3893SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 3894INSERT INTO t1 3895SET f_int1 = @cur_value , f_int2 = @cur_value, 3896f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3897f_charbig = '#SINGLE#'; 3898 3899# check single-1 success: 1 3900SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 3901INSERT INTO t1 3902SET f_int1 = @cur_value , f_int2 = @cur_value, 3903f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 3904f_charbig = '#SINGLE#'; 3905 3906# check single-2 success: 1 3907SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 3908SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 3909UPDATE t1 SET f_int1 = @cur_value2 3910WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 3911 3912# check single-3 success: 1 3913SET @cur_value1= -1; 3914SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 3915UPDATE t1 SET f_int1 = @cur_value1 3916WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 3917 3918# check single-4 success: 1 3919SELECT MAX(f_int1) INTO @cur_value FROM t1; 3920DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 3921 3922# check single-5 success: 1 3923DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 3924 3925# check single-6 success: 1 3926INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 3927 3928# check single-7 success: 1 3929DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 3930DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 3931INSERT t1 SET f_int1 = 0 , f_int2 = 0, 3932f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 3933f_charbig = '#NULL#'; 3934INSERT INTO t1 3935SET f_int1 = NULL , f_int2 = -@max_row, 3936f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 3937f_charbig = '#NULL#'; 3938ERROR 23000: Column 'f_int1' cannot be null 3939# check null success: 1 3940DELETE FROM t1 3941WHERE f_int1 = 0 AND f_int2 = 0 3942AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 3943AND f_charbig = '#NULL#'; 3944INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3945SELECT f_int1, f_int1, '', '', 'was inserted' 3946 FROM t0_template source_tab 3947WHERE MOD(f_int1,3) = 0 3948AND f_int1 BETWEEN @max_row_div2 AND @max_row 3949ON DUPLICATE KEY 3950UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 3951f_int2 = 2 * @max_row + source_tab.f_int1, 3952f_charbig = 'was updated'; 3953 3954# check unique-1-a success: 1 3955 3956# check unique-1-b success: 1 3957DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3958UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 3959f_int2 = CAST(f_char1 AS SIGNED INT), 3960f_charbig = CONCAT('===',f_char1,'===') 3961WHERE f_charbig = 'was updated'; 3962REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3963SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 3964 FROM t0_template source_tab 3965WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 3966 3967# check replace success: 1 3968DELETE FROM t1 3969WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 3970DELETE FROM t1 3971WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 3972f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 3973UPDATE t1 SET f_int2 = f_int1, 3974f_char1 = CAST(f_int1 AS CHAR), 3975f_char2 = CAST(f_int1 AS CHAR), 3976f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 3977WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 3978SET AUTOCOMMIT= 0; 3979INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3980SELECT f_int1, f_int1, '', '', 'was inserted' 3981FROM t0_template source_tab 3982WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 3983 3984# check transactions-1 success: 1 3985COMMIT WORK; 3986 3987# check transactions-2 success: 1 3988ROLLBACK WORK; 3989 3990# check transactions-3 success: 1 3991DELETE FROM t1 WHERE f_charbig = 'was inserted'; 3992COMMIT WORK; 3993ROLLBACK WORK; 3994 3995# check transactions-4 success: 1 3996INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 3997SELECT f_int1, f_int1, '', '', 'was inserted' 3998FROM t0_template source_tab 3999WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4000 4001# check transactions-5 success: 1 4002ROLLBACK WORK; 4003 4004# check transactions-6 success: 1 4005# INFO: Storage engine used for t1 seems to be transactional. 4006COMMIT; 4007 4008# check transactions-7 success: 1 4009DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4010COMMIT WORK; 4011SET @@session.sql_mode = 'traditional'; 4012Warnings: 4013Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4014SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4015INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4016SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4017'', '', 'was inserted' FROM t0_template 4018WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4019ERROR 22012: Division by 0 4020COMMIT; 4021 4022# check transactions-8 success: 1 4023# INFO: Storage engine used for t1 seems to be able to revert 4024# changes made by the failing statement. 4025SET @@session.sql_mode = ''; 4026Warnings: 4027Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4028SET AUTOCOMMIT= 1; 4029DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4030COMMIT WORK; 4031UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4032 4033# check special-1 success: 1 4034UPDATE t1 SET f_charbig = ''; 4035 4036# check special-2 success: 1 4037UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4038INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4039SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4040WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4041INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4042SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4043'just inserted' FROM t0_template 4044WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4045CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4046BEGIN 4047UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4048f_charbig = 'updated by trigger' 4049 WHERE f_int1 = new.f_int1; 4050END| 4051INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4052SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4053WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4054 4055# check trigger-1 success: 1 4056DROP TRIGGER trg_1; 4057UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4058f_int2 = CAST(f_char1 AS SIGNED INT), 4059f_charbig = 'just inserted' 4060 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4061DELETE FROM t0_aux 4062WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4063INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4064SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4065'just inserted' FROM t0_template 4066WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4067CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4068BEGIN 4069UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4070f_charbig = 'updated by trigger' 4071 WHERE f_int1 = new.f_int1; 4072END| 4073INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4074SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4075WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4076 4077# check trigger-2 success: 1 4078DROP TRIGGER trg_1; 4079UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4080f_int2 = CAST(f_char1 AS SIGNED INT), 4081f_charbig = 'just inserted' 4082 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4083DELETE FROM t0_aux 4084WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4085INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4086SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4087'just inserted' FROM t0_template 4088WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4089CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4090BEGIN 4091UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4092f_charbig = 'updated by trigger' 4093 WHERE f_int1 = new.f_int1; 4094END| 4095UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4096WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4097 4098# check trigger-3 success: 1 4099DROP TRIGGER trg_1; 4100UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4101f_int2 = CAST(f_char1 AS SIGNED INT), 4102f_charbig = 'just inserted' 4103 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4104DELETE FROM t0_aux 4105WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4106INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4107SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4108'just inserted' FROM t0_template 4109WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4110CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4111BEGIN 4112UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4113f_charbig = 'updated by trigger' 4114 WHERE f_int1 = - old.f_int1; 4115END| 4116UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4117WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4118 4119# check trigger-4 success: 1 4120DROP TRIGGER trg_1; 4121UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4122f_int2 = CAST(f_char1 AS SIGNED INT), 4123f_charbig = 'just inserted' 4124 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4125DELETE FROM t0_aux 4126WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4127INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4128SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4129'just inserted' FROM t0_template 4130WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4131CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4132BEGIN 4133UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4134f_charbig = 'updated by trigger' 4135 WHERE f_int1 = new.f_int1; 4136END| 4137UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4138WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4139 4140# check trigger-5 success: 1 4141DROP TRIGGER trg_1; 4142UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4143f_int2 = CAST(f_char1 AS SIGNED INT), 4144f_charbig = 'just inserted' 4145 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4146DELETE FROM t0_aux 4147WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4148INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4149SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4150'just inserted' FROM t0_template 4151WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4152CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4153BEGIN 4154UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4155f_charbig = 'updated by trigger' 4156 WHERE f_int1 = - old.f_int1; 4157END| 4158UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4159WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4160 4161# check trigger-6 success: 1 4162DROP TRIGGER trg_1; 4163UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4164f_int2 = CAST(f_char1 AS SIGNED INT), 4165f_charbig = 'just inserted' 4166 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4167DELETE FROM t0_aux 4168WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4169INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4170SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4171'just inserted' FROM t0_template 4172WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4173CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4174BEGIN 4175UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4176f_charbig = 'updated by trigger' 4177 WHERE f_int1 = - old.f_int1; 4178END| 4179DELETE FROM t0_aux 4180WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4181 4182# check trigger-7 success: 1 4183DROP TRIGGER trg_1; 4184UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4185f_int2 = CAST(f_char1 AS SIGNED INT), 4186f_charbig = 'just inserted' 4187 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4188DELETE FROM t0_aux 4189WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4190INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4191SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4192'just inserted' FROM t0_template 4193WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4194CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4195BEGIN 4196UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4197f_charbig = 'updated by trigger' 4198 WHERE f_int1 = - old.f_int1; 4199END| 4200DELETE FROM t0_aux 4201WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4202 4203# check trigger-8 success: 1 4204DROP TRIGGER trg_1; 4205UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4206f_int2 = CAST(f_char1 AS SIGNED INT), 4207f_charbig = 'just inserted' 4208 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4209DELETE FROM t0_aux 4210WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4211DELETE FROM t1 4212WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4213CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4214BEGIN 4215SET new.f_int1 = old.f_int1 + @max_row, 4216new.f_int2 = old.f_int2 - @max_row, 4217new.f_charbig = '####updated per update trigger####'; 4218END| 4219UPDATE t1 4220SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4221f_charbig = '####updated per update statement itself####'; 4222 4223# check trigger-9 success: 1 4224DROP TRIGGER trg_2; 4225UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4226f_int2 = CAST(f_char1 AS SIGNED INT), 4227f_charbig = CONCAT('===',f_char1,'==='); 4228CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4229BEGIN 4230SET new.f_int1 = new.f_int1 + @max_row, 4231new.f_int2 = new.f_int2 - @max_row, 4232new.f_charbig = '####updated per update trigger####'; 4233END| 4234UPDATE t1 4235SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4236f_charbig = '####updated per update statement itself####'; 4237 4238# check trigger-10 success: 1 4239DROP TRIGGER trg_2; 4240UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4241f_int2 = CAST(f_char1 AS SIGNED INT), 4242f_charbig = CONCAT('===',f_char1,'==='); 4243CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4244BEGIN 4245SET new.f_int1 = @my_max1 + @counter, 4246new.f_int2 = @my_min2 - @counter, 4247new.f_charbig = '####updated per insert trigger####'; 4248SET @counter = @counter + 1; 4249END| 4250SET @counter = 1; 4251SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4253SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4254CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4255WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4256ORDER BY f_int1; 4257DROP TRIGGER trg_3; 4258 4259# check trigger-11 success: 1 4260DELETE FROM t1 4261WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4262AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4263AND f_charbig = '####updated per insert trigger####'; 4264CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4265BEGIN 4266SET new.f_int1 = @my_max1 + @counter, 4267new.f_int2 = @my_min2 - @counter, 4268new.f_charbig = '####updated per insert trigger####'; 4269SET @counter = @counter + 1; 4270END| 4271SET @counter = 1; 4272SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4273INSERT INTO t1 (f_char1, f_char2, f_charbig) 4274SELECT CAST(f_int1 AS CHAR), 4275CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4276WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4277ORDER BY f_int1; 4278DROP TRIGGER trg_3; 4279 4280# check trigger-12 success: 1 4281DELETE FROM t1 4282WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4283AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4284AND f_charbig = '####updated per insert trigger####'; 4285ANALYZE TABLE t1; 4286Table Op Msg_type Msg_text 4287test.t1 analyze status OK 4288CHECK TABLE t1 EXTENDED; 4289Table Op Msg_type Msg_text 4290test.t1 check status OK 4291CHECKSUM TABLE t1 EXTENDED; 4292Table Checksum 4293test.t1 <some_value> 4294OPTIMIZE TABLE t1; 4295Table Op Msg_type Msg_text 4296test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 4297test.t1 optimize status OK 4298# check layout success: 1 4299REPAIR TABLE t1 EXTENDED; 4300Table Op Msg_type Msg_text 4301test.t1 repair status OK 4302# check layout success: 1 4303TRUNCATE t1; 4304 4305# check TRUNCATE success: 1 4306# check layout success: 1 4307# End usability test (inc/partition_check.inc) 4308DROP TABLE t1; 4309CREATE TABLE t1 ( 4310f_int1 INTEGER, 4311f_int2 INTEGER, 4312f_char1 CHAR(20), 4313f_char2 CHAR(20), 4314f_charbig VARCHAR(1000) 4315, PRIMARY KEY (f_int1,f_int2) 4316) 4317PARTITION BY KEY(f_int1) PARTITIONS 5; 4318INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4319SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4320WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 4321ALTER TABLE t1 MODIFY f_int2 BIGINT; 4322INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4323SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4324WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 4325# Start usability test (inc/partition_check.inc) 4326create_command 4327SHOW CREATE TABLE t1; 4328Table Create Table 4329t1 CREATE TABLE `t1` ( 4330 `f_int1` int(11) NOT NULL, 4331 `f_int2` bigint(20) NOT NULL, 4332 `f_char1` char(20) DEFAULT NULL, 4333 `f_char2` char(20) DEFAULT NULL, 4334 `f_charbig` varchar(1000) DEFAULT NULL, 4335 PRIMARY KEY (`f_int1`,`f_int2`) 4336) ENGINE=TokuDB DEFAULT CHARSET=latin1 4337/*!50100 PARTITION BY KEY (f_int1) 4338PARTITIONS 5 */ 4339 4340# check prerequisites-1 success: 1 4341# check COUNT(*) success: 1 4342# check MIN/MAX(f_int1) success: 1 4343# check MIN/MAX(f_int2) success: 1 4344INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4345SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4346CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4347WHERE f_int1 IN (2,3); 4348ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 4349# check prerequisites-3 success: 1 4350# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 4351INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4352SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4353CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4354WHERE f_int1 IN (2,3); 4355DELETE FROM t1 WHERE f_charbig = 'delete me'; 4356INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4357SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4358CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4359WHERE f_int1 IN (2,3); 4360DELETE FROM t1 WHERE f_charbig = 'delete me'; 4361# check read via f_int1 success: 1 4362# check read via f_int2 success: 1 4363 4364# check multiple-1 success: 1 4365DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4366 4367# check multiple-2 success: 1 4368INSERT INTO t1 SELECT * FROM t0_template 4369WHERE MOD(f_int1,3) = 0; 4370 4371# check multiple-3 success: 1 4372UPDATE t1 SET f_int1 = f_int1 + @max_row 4373WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4374AND @max_row_div2 + @max_row_div4; 4375 4376# check multiple-4 success: 1 4377DELETE FROM t1 4378WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4379AND @max_row_div2 + @max_row_div4 + @max_row; 4380 4381# check multiple-5 success: 1 4382SELECT COUNT(*) INTO @try_count FROM t0_template 4383WHERE MOD(f_int1,3) = 0 4384AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4385SELECT COUNT(*) INTO @clash_count 4386FROM t1 INNER JOIN t0_template USING(f_int1) 4387WHERE MOD(f_int1,3) = 0 4388AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4389SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4390INSERT INTO t1 4391SET f_int1 = @cur_value , f_int2 = @cur_value, 4392f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4393f_charbig = '#SINGLE#'; 4394 4395# check single-1 success: 1 4396SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4397INSERT INTO t1 4398SET f_int1 = @cur_value , f_int2 = @cur_value, 4399f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4400f_charbig = '#SINGLE#'; 4401 4402# check single-2 success: 1 4403SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4404SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4405UPDATE t1 SET f_int1 = @cur_value2 4406WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4407 4408# check single-3 success: 1 4409SET @cur_value1= -1; 4410SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4411UPDATE t1 SET f_int1 = @cur_value1 4412WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4413 4414# check single-4 success: 1 4415SELECT MAX(f_int1) INTO @cur_value FROM t1; 4416DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4417 4418# check single-5 success: 1 4419DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4420 4421# check single-6 success: 1 4422INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4423 4424# check single-7 success: 1 4425DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4426DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4427INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4428f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4429f_charbig = '#NULL#'; 4430INSERT INTO t1 4431SET f_int1 = NULL , f_int2 = -@max_row, 4432f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4433f_charbig = '#NULL#'; 4434ERROR 23000: Column 'f_int1' cannot be null 4435# check null success: 1 4436DELETE FROM t1 4437WHERE f_int1 = 0 AND f_int2 = 0 4438AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4439AND f_charbig = '#NULL#'; 4440INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4441SELECT f_int1, f_int1, '', '', 'was inserted' 4442 FROM t0_template source_tab 4443WHERE MOD(f_int1,3) = 0 4444AND f_int1 BETWEEN @max_row_div2 AND @max_row 4445ON DUPLICATE KEY 4446UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 4447f_int2 = 2 * @max_row + source_tab.f_int1, 4448f_charbig = 'was updated'; 4449 4450# check unique-1-a success: 1 4451 4452# check unique-1-b success: 1 4453DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4454UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4455f_int2 = CAST(f_char1 AS SIGNED INT), 4456f_charbig = CONCAT('===',f_char1,'===') 4457WHERE f_charbig = 'was updated'; 4458REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4459SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 4460 FROM t0_template source_tab 4461WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4462 4463# check replace success: 1 4464DELETE FROM t1 4465WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 4466DELETE FROM t1 4467WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 4468f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 4469UPDATE t1 SET f_int2 = f_int1, 4470f_char1 = CAST(f_int1 AS CHAR), 4471f_char2 = CAST(f_int1 AS CHAR), 4472f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 4473WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 4474SET AUTOCOMMIT= 0; 4475INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4476SELECT f_int1, f_int1, '', '', 'was inserted' 4477FROM t0_template source_tab 4478WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4479 4480# check transactions-1 success: 1 4481COMMIT WORK; 4482 4483# check transactions-2 success: 1 4484ROLLBACK WORK; 4485 4486# check transactions-3 success: 1 4487DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4488COMMIT WORK; 4489ROLLBACK WORK; 4490 4491# check transactions-4 success: 1 4492INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4493SELECT f_int1, f_int1, '', '', 'was inserted' 4494FROM t0_template source_tab 4495WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4496 4497# check transactions-5 success: 1 4498ROLLBACK WORK; 4499 4500# check transactions-6 success: 1 4501# INFO: Storage engine used for t1 seems to be transactional. 4502COMMIT; 4503 4504# check transactions-7 success: 1 4505DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4506COMMIT WORK; 4507SET @@session.sql_mode = 'traditional'; 4508Warnings: 4509Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4510SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 4511INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4512SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 4513'', '', 'was inserted' FROM t0_template 4514WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4515ERROR 22012: Division by 0 4516COMMIT; 4517 4518# check transactions-8 success: 1 4519# INFO: Storage engine used for t1 seems to be able to revert 4520# changes made by the failing statement. 4521SET @@session.sql_mode = ''; 4522Warnings: 4523Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 4524SET AUTOCOMMIT= 1; 4525DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4526COMMIT WORK; 4527UPDATE t1 SET f_charbig = REPEAT('b', 1000); 4528 4529# check special-1 success: 1 4530UPDATE t1 SET f_charbig = ''; 4531 4532# check special-2 success: 1 4533UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 4534INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4535SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 4536WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4537INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4538SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4539'just inserted' FROM t0_template 4540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4541CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 4542BEGIN 4543UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4544f_charbig = 'updated by trigger' 4545 WHERE f_int1 = new.f_int1; 4546END| 4547INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4548SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4549WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4550 4551# check trigger-1 success: 1 4552DROP TRIGGER trg_1; 4553UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4554f_int2 = CAST(f_char1 AS SIGNED INT), 4555f_charbig = 'just inserted' 4556 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4557DELETE FROM t0_aux 4558WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4559INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4560SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4561'just inserted' FROM t0_template 4562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4563CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 4564BEGIN 4565UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4566f_charbig = 'updated by trigger' 4567 WHERE f_int1 = new.f_int1; 4568END| 4569INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4570SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 4571WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4572 4573# check trigger-2 success: 1 4574DROP TRIGGER trg_1; 4575UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4576f_int2 = CAST(f_char1 AS SIGNED INT), 4577f_charbig = 'just inserted' 4578 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4579DELETE FROM t0_aux 4580WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4581INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4582SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4583'just inserted' FROM t0_template 4584WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4585CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4586BEGIN 4587UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4588f_charbig = 'updated by trigger' 4589 WHERE f_int1 = new.f_int1; 4590END| 4591UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4592WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4593 4594# check trigger-3 success: 1 4595DROP TRIGGER trg_1; 4596UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4597f_int2 = CAST(f_char1 AS SIGNED INT), 4598f_charbig = 'just inserted' 4599 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4600DELETE FROM t0_aux 4601WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4602INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4603SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4604'just inserted' FROM t0_template 4605WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4606CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 4607BEGIN 4608UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4609f_charbig = 'updated by trigger' 4610 WHERE f_int1 = - old.f_int1; 4611END| 4612UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4613WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4614 4615# check trigger-4 success: 1 4616DROP TRIGGER trg_1; 4617UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4618f_int2 = CAST(f_char1 AS SIGNED INT), 4619f_charbig = 'just inserted' 4620 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4621DELETE FROM t0_aux 4622WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4623INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4624SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4625'just inserted' FROM t0_template 4626WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4627CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4628BEGIN 4629UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4630f_charbig = 'updated by trigger' 4631 WHERE f_int1 = new.f_int1; 4632END| 4633UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4634WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4635 4636# check trigger-5 success: 1 4637DROP TRIGGER trg_1; 4638UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4639f_int2 = CAST(f_char1 AS SIGNED INT), 4640f_charbig = 'just inserted' 4641 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4642DELETE FROM t0_aux 4643WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4644INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4645SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4646'just inserted' FROM t0_template 4647WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4648CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 4649BEGIN 4650UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4651f_charbig = 'updated by trigger' 4652 WHERE f_int1 = - old.f_int1; 4653END| 4654UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 4655WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4656 4657# check trigger-6 success: 1 4658DROP TRIGGER trg_1; 4659UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4660f_int2 = CAST(f_char1 AS SIGNED INT), 4661f_charbig = 'just inserted' 4662 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4663DELETE FROM t0_aux 4664WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4665INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4666SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4667'just inserted' FROM t0_template 4668WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4669CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 4670BEGIN 4671UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4672f_charbig = 'updated by trigger' 4673 WHERE f_int1 = - old.f_int1; 4674END| 4675DELETE FROM t0_aux 4676WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4677 4678# check trigger-7 success: 1 4679DROP TRIGGER trg_1; 4680UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4681f_int2 = CAST(f_char1 AS SIGNED INT), 4682f_charbig = 'just inserted' 4683 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4684DELETE FROM t0_aux 4685WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4686INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 4687SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 4688'just inserted' FROM t0_template 4689WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4690CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 4691BEGIN 4692UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 4693f_charbig = 'updated by trigger' 4694 WHERE f_int1 = - old.f_int1; 4695END| 4696DELETE FROM t0_aux 4697WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 4698 4699# check trigger-8 success: 1 4700DROP TRIGGER trg_1; 4701UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4702f_int2 = CAST(f_char1 AS SIGNED INT), 4703f_charbig = 'just inserted' 4704 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 4705DELETE FROM t0_aux 4706WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4707DELETE FROM t1 4708WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 4709CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4710BEGIN 4711SET new.f_int1 = old.f_int1 + @max_row, 4712new.f_int2 = old.f_int2 - @max_row, 4713new.f_charbig = '####updated per update trigger####'; 4714END| 4715UPDATE t1 4716SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4717f_charbig = '####updated per update statement itself####'; 4718 4719# check trigger-9 success: 1 4720DROP TRIGGER trg_2; 4721UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4722f_int2 = CAST(f_char1 AS SIGNED INT), 4723f_charbig = CONCAT('===',f_char1,'==='); 4724CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 4725BEGIN 4726SET new.f_int1 = new.f_int1 + @max_row, 4727new.f_int2 = new.f_int2 - @max_row, 4728new.f_charbig = '####updated per update trigger####'; 4729END| 4730UPDATE t1 4731SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 4732f_charbig = '####updated per update statement itself####'; 4733 4734# check trigger-10 success: 1 4735DROP TRIGGER trg_2; 4736UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4737f_int2 = CAST(f_char1 AS SIGNED INT), 4738f_charbig = CONCAT('===',f_char1,'==='); 4739CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4740BEGIN 4741SET new.f_int1 = @my_max1 + @counter, 4742new.f_int2 = @my_min2 - @counter, 4743new.f_charbig = '####updated per insert trigger####'; 4744SET @counter = @counter + 1; 4745END| 4746SET @counter = 1; 4747SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4748INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4749SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4750CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4751WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4752ORDER BY f_int1; 4753DROP TRIGGER trg_3; 4754 4755# check trigger-11 success: 1 4756DELETE FROM t1 4757WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4758AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4759AND f_charbig = '####updated per insert trigger####'; 4760CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 4761BEGIN 4762SET new.f_int1 = @my_max1 + @counter, 4763new.f_int2 = @my_min2 - @counter, 4764new.f_charbig = '####updated per insert trigger####'; 4765SET @counter = @counter + 1; 4766END| 4767SET @counter = 1; 4768SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 4769INSERT INTO t1 (f_char1, f_char2, f_charbig) 4770SELECT CAST(f_int1 AS CHAR), 4771CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 4772WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 4773ORDER BY f_int1; 4774DROP TRIGGER trg_3; 4775 4776# check trigger-12 success: 1 4777DELETE FROM t1 4778WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 4779AND f_int2 <> CAST(f_char1 AS SIGNED INT) 4780AND f_charbig = '####updated per insert trigger####'; 4781ANALYZE TABLE t1; 4782Table Op Msg_type Msg_text 4783test.t1 analyze status OK 4784CHECK TABLE t1 EXTENDED; 4785Table Op Msg_type Msg_text 4786test.t1 check status OK 4787CHECKSUM TABLE t1 EXTENDED; 4788Table Checksum 4789test.t1 <some_value> 4790OPTIMIZE TABLE t1; 4791Table Op Msg_type Msg_text 4792test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 4793test.t1 optimize status OK 4794# check layout success: 1 4795REPAIR TABLE t1 EXTENDED; 4796Table Op Msg_type Msg_text 4797test.t1 repair status OK 4798# check layout success: 1 4799TRUNCATE t1; 4800 4801# check TRUNCATE success: 1 4802# check layout success: 1 4803# End usability test (inc/partition_check.inc) 4804DROP TABLE t1; 4805CREATE TABLE t1 ( 4806f_int1 INTEGER, 4807f_int2 INTEGER, 4808f_char1 CHAR(20), 4809f_char2 CHAR(20), 4810f_charbig VARCHAR(1000) 4811, PRIMARY KEY (f_int1,f_int2) 4812) 4813PARTITION BY LIST(MOD(f_int1,4)) 4814(PARTITION part_3 VALUES IN (-3), 4815PARTITION part_2 VALUES IN (-2), 4816PARTITION part_1 VALUES IN (-1), 4817PARTITION part_N VALUES IN (NULL), 4818PARTITION part0 VALUES IN (0), 4819PARTITION part1 VALUES IN (1), 4820PARTITION part2 VALUES IN (2), 4821PARTITION part3 VALUES IN (3)); 4822INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4823SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4824WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 4825ALTER TABLE t1 MODIFY f_int2 BIGINT; 4826INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 4827SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 4828WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 4829# Start usability test (inc/partition_check.inc) 4830create_command 4831SHOW CREATE TABLE t1; 4832Table Create Table 4833t1 CREATE TABLE `t1` ( 4834 `f_int1` int(11) NOT NULL, 4835 `f_int2` bigint(20) NOT NULL, 4836 `f_char1` char(20) DEFAULT NULL, 4837 `f_char2` char(20) DEFAULT NULL, 4838 `f_charbig` varchar(1000) DEFAULT NULL, 4839 PRIMARY KEY (`f_int1`,`f_int2`) 4840) ENGINE=TokuDB DEFAULT CHARSET=latin1 4841/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 4842(PARTITION part_3 VALUES IN (-3) ENGINE = TokuDB, 4843 PARTITION part_2 VALUES IN (-2) ENGINE = TokuDB, 4844 PARTITION part_1 VALUES IN (-1) ENGINE = TokuDB, 4845 PARTITION part_N VALUES IN (NULL) ENGINE = TokuDB, 4846 PARTITION part0 VALUES IN (0) ENGINE = TokuDB, 4847 PARTITION part1 VALUES IN (1) ENGINE = TokuDB, 4848 PARTITION part2 VALUES IN (2) ENGINE = TokuDB, 4849 PARTITION part3 VALUES IN (3) ENGINE = TokuDB) */ 4850 4851# check prerequisites-1 success: 1 4852# check COUNT(*) success: 1 4853# check MIN/MAX(f_int1) success: 1 4854# check MIN/MAX(f_int2) success: 1 4855INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4856SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 4857CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 4858WHERE f_int1 IN (2,3); 4859ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 4860# check prerequisites-3 success: 1 4861# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 4862INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4863SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4864CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4865WHERE f_int1 IN (2,3); 4866DELETE FROM t1 WHERE f_charbig = 'delete me'; 4867INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4868SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 4869CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 4870WHERE f_int1 IN (2,3); 4871DELETE FROM t1 WHERE f_charbig = 'delete me'; 4872# check read via f_int1 success: 1 4873# check read via f_int2 success: 1 4874 4875# check multiple-1 success: 1 4876DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 4877 4878# check multiple-2 success: 1 4879INSERT INTO t1 SELECT * FROM t0_template 4880WHERE MOD(f_int1,3) = 0; 4881 4882# check multiple-3 success: 1 4883UPDATE t1 SET f_int1 = f_int1 + @max_row 4884WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 4885AND @max_row_div2 + @max_row_div4; 4886 4887# check multiple-4 success: 1 4888DELETE FROM t1 4889WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 4890AND @max_row_div2 + @max_row_div4 + @max_row; 4891 4892# check multiple-5 success: 1 4893SELECT COUNT(*) INTO @try_count FROM t0_template 4894WHERE MOD(f_int1,3) = 0 4895AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4896SELECT COUNT(*) INTO @clash_count 4897FROM t1 INNER JOIN t0_template USING(f_int1) 4898WHERE MOD(f_int1,3) = 0 4899AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4900SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 4901INSERT INTO t1 4902SET f_int1 = @cur_value , f_int2 = @cur_value, 4903f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4904f_charbig = '#SINGLE#'; 4905 4906# check single-1 success: 1 4907SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 4908INSERT INTO t1 4909SET f_int1 = @cur_value , f_int2 = @cur_value, 4910f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 4911f_charbig = '#SINGLE#'; 4912 4913# check single-2 success: 1 4914SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 4915SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 4916UPDATE t1 SET f_int1 = @cur_value2 4917WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 4918 4919# check single-3 success: 1 4920SET @cur_value1= -1; 4921SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 4922UPDATE t1 SET f_int1 = @cur_value1 4923WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 4924 4925# check single-4 success: 1 4926SELECT MAX(f_int1) INTO @cur_value FROM t1; 4927DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 4928 4929# check single-5 success: 1 4930DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 4931 4932# check single-6 success: 1 4933INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 4934 4935# check single-7 success: 1 4936DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 4937DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 4938INSERT t1 SET f_int1 = 0 , f_int2 = 0, 4939f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 4940f_charbig = '#NULL#'; 4941INSERT INTO t1 4942SET f_int1 = NULL , f_int2 = -@max_row, 4943f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 4944f_charbig = '#NULL#'; 4945ERROR 23000: Column 'f_int1' cannot be null 4946# check null success: 1 4947DELETE FROM t1 4948WHERE f_int1 = 0 AND f_int2 = 0 4949AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 4950AND f_charbig = '#NULL#'; 4951INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4952SELECT f_int1, f_int1, '', '', 'was inserted' 4953 FROM t0_template source_tab 4954WHERE MOD(f_int1,3) = 0 4955AND f_int1 BETWEEN @max_row_div2 AND @max_row 4956ON DUPLICATE KEY 4957UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 4958f_int2 = 2 * @max_row + source_tab.f_int1, 4959f_charbig = 'was updated'; 4960 4961# check unique-1-a success: 1 4962 4963# check unique-1-b success: 1 4964DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4965UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 4966f_int2 = CAST(f_char1 AS SIGNED INT), 4967f_charbig = CONCAT('===',f_char1,'===') 4968WHERE f_charbig = 'was updated'; 4969REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4970SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 4971 FROM t0_template source_tab 4972WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 4973 4974# check replace success: 1 4975DELETE FROM t1 4976WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 4977DELETE FROM t1 4978WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 4979f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 4980UPDATE t1 SET f_int2 = f_int1, 4981f_char1 = CAST(f_int1 AS CHAR), 4982f_char2 = CAST(f_int1 AS CHAR), 4983f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 4984WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 4985SET AUTOCOMMIT= 0; 4986INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 4987SELECT f_int1, f_int1, '', '', 'was inserted' 4988FROM t0_template source_tab 4989WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 4990 4991# check transactions-1 success: 1 4992COMMIT WORK; 4993 4994# check transactions-2 success: 1 4995ROLLBACK WORK; 4996 4997# check transactions-3 success: 1 4998DELETE FROM t1 WHERE f_charbig = 'was inserted'; 4999COMMIT WORK; 5000ROLLBACK WORK; 5001 5002# check transactions-4 success: 1 5003INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5004SELECT f_int1, f_int1, '', '', 'was inserted' 5005FROM t0_template source_tab 5006WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5007 5008# check transactions-5 success: 1 5009ROLLBACK WORK; 5010 5011# check transactions-6 success: 1 5012# INFO: Storage engine used for t1 seems to be transactional. 5013COMMIT; 5014 5015# check transactions-7 success: 1 5016DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5017COMMIT WORK; 5018SET @@session.sql_mode = 'traditional'; 5019Warnings: 5020Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5021SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5022INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5023SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5024'', '', 'was inserted' FROM t0_template 5025WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5026ERROR 22012: Division by 0 5027COMMIT; 5028 5029# check transactions-8 success: 1 5030# INFO: Storage engine used for t1 seems to be able to revert 5031# changes made by the failing statement. 5032SET @@session.sql_mode = ''; 5033Warnings: 5034Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5035SET AUTOCOMMIT= 1; 5036DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5037COMMIT WORK; 5038UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5039 5040# check special-1 success: 1 5041UPDATE t1 SET f_charbig = ''; 5042 5043# check special-2 success: 1 5044UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5045INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5046SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5047WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5048INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5049SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5050'just inserted' FROM t0_template 5051WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5052CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5053BEGIN 5054UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5055f_charbig = 'updated by trigger' 5056 WHERE f_int1 = new.f_int1; 5057END| 5058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5059SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5060WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5061 5062# check trigger-1 success: 1 5063DROP TRIGGER trg_1; 5064UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5065f_int2 = CAST(f_char1 AS SIGNED INT), 5066f_charbig = 'just inserted' 5067 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5068DELETE FROM t0_aux 5069WHERE ABS(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 AFTER 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-2 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 BEFORE UPDATE 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| 5102UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5103WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5104 5105# check trigger-3 success: 1 5106DROP TRIGGER trg_1; 5107UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5108f_int2 = CAST(f_char1 AS SIGNED INT), 5109f_charbig = 'just inserted' 5110 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5111DELETE FROM t0_aux 5112WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5113INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5114SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5115'just inserted' FROM t0_template 5116WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5117CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5118BEGIN 5119UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5120f_charbig = 'updated by trigger' 5121 WHERE f_int1 = - old.f_int1; 5122END| 5123UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5124WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5125 5126# check trigger-4 success: 1 5127DROP TRIGGER trg_1; 5128UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5129f_int2 = CAST(f_char1 AS SIGNED INT), 5130f_charbig = 'just inserted' 5131 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5132DELETE FROM t0_aux 5133WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5134INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5135SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5136'just inserted' FROM t0_template 5137WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5138CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5139BEGIN 5140UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5141f_charbig = 'updated by trigger' 5142 WHERE f_int1 = new.f_int1; 5143END| 5144UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5145WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5146 5147# check trigger-5 success: 1 5148DROP TRIGGER trg_1; 5149UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5150f_int2 = CAST(f_char1 AS SIGNED INT), 5151f_charbig = 'just inserted' 5152 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5153DELETE FROM t0_aux 5154WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5155INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5156SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5157'just inserted' FROM t0_template 5158WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5159CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5160BEGIN 5161UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5162f_charbig = 'updated by trigger' 5163 WHERE f_int1 = - old.f_int1; 5164END| 5165UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5166WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5167 5168# check trigger-6 success: 1 5169DROP TRIGGER trg_1; 5170UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5171f_int2 = CAST(f_char1 AS SIGNED INT), 5172f_charbig = 'just inserted' 5173 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5174DELETE FROM t0_aux 5175WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5176INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5177SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5178'just inserted' FROM t0_template 5179WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5180CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5181BEGIN 5182UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5183f_charbig = 'updated by trigger' 5184 WHERE f_int1 = - old.f_int1; 5185END| 5186DELETE FROM t0_aux 5187WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5188 5189# check trigger-7 success: 1 5190DROP TRIGGER trg_1; 5191UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5192f_int2 = CAST(f_char1 AS SIGNED INT), 5193f_charbig = 'just inserted' 5194 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5195DELETE FROM t0_aux 5196WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5197INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5198SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5199'just inserted' FROM t0_template 5200WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5201CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5202BEGIN 5203UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5204f_charbig = 'updated by trigger' 5205 WHERE f_int1 = - old.f_int1; 5206END| 5207DELETE FROM t0_aux 5208WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5209 5210# check trigger-8 success: 1 5211DROP TRIGGER trg_1; 5212UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5213f_int2 = CAST(f_char1 AS SIGNED INT), 5214f_charbig = 'just inserted' 5215 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5216DELETE FROM t0_aux 5217WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5218DELETE FROM t1 5219WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5220CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5221BEGIN 5222SET new.f_int1 = old.f_int1 + @max_row, 5223new.f_int2 = old.f_int2 - @max_row, 5224new.f_charbig = '####updated per update trigger####'; 5225END| 5226UPDATE t1 5227SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5228f_charbig = '####updated per update statement itself####'; 5229 5230# check trigger-9 success: 1 5231DROP TRIGGER trg_2; 5232UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5233f_int2 = CAST(f_char1 AS SIGNED INT), 5234f_charbig = CONCAT('===',f_char1,'==='); 5235CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5236BEGIN 5237SET new.f_int1 = new.f_int1 + @max_row, 5238new.f_int2 = new.f_int2 - @max_row, 5239new.f_charbig = '####updated per update trigger####'; 5240END| 5241UPDATE t1 5242SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5243f_charbig = '####updated per update statement itself####'; 5244 5245# check trigger-10 success: 1 5246DROP TRIGGER trg_2; 5247UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5248f_int2 = CAST(f_char1 AS SIGNED INT), 5249f_charbig = CONCAT('===',f_char1,'==='); 5250CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5251BEGIN 5252SET new.f_int1 = @my_max1 + @counter, 5253new.f_int2 = @my_min2 - @counter, 5254new.f_charbig = '####updated per insert trigger####'; 5255SET @counter = @counter + 1; 5256END| 5257SET @counter = 1; 5258SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5259INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5260SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5261CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5262WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5263ORDER BY f_int1; 5264DROP TRIGGER trg_3; 5265 5266# check trigger-11 success: 1 5267DELETE FROM t1 5268WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5269AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5270AND f_charbig = '####updated per insert trigger####'; 5271CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5272BEGIN 5273SET new.f_int1 = @my_max1 + @counter, 5274new.f_int2 = @my_min2 - @counter, 5275new.f_charbig = '####updated per insert trigger####'; 5276SET @counter = @counter + 1; 5277END| 5278SET @counter = 1; 5279SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5280INSERT INTO t1 (f_char1, f_char2, f_charbig) 5281SELECT CAST(f_int1 AS CHAR), 5282CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5283WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5284ORDER BY f_int1; 5285DROP TRIGGER trg_3; 5286 5287# check trigger-12 success: 1 5288DELETE FROM t1 5289WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5290AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5291AND f_charbig = '####updated per insert trigger####'; 5292ANALYZE TABLE t1; 5293Table Op Msg_type Msg_text 5294test.t1 analyze status OK 5295CHECK TABLE t1 EXTENDED; 5296Table Op Msg_type Msg_text 5297test.t1 check status OK 5298CHECKSUM TABLE t1 EXTENDED; 5299Table Checksum 5300test.t1 <some_value> 5301OPTIMIZE TABLE t1; 5302Table Op Msg_type Msg_text 5303test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 5304test.t1 optimize status OK 5305# check layout success: 1 5306REPAIR TABLE t1 EXTENDED; 5307Table Op Msg_type Msg_text 5308test.t1 repair status OK 5309# check layout success: 1 5310TRUNCATE t1; 5311 5312# check TRUNCATE success: 1 5313# check layout success: 1 5314# End usability test (inc/partition_check.inc) 5315DROP TABLE t1; 5316CREATE TABLE t1 ( 5317f_int1 INTEGER, 5318f_int2 INTEGER, 5319f_char1 CHAR(20), 5320f_char2 CHAR(20), 5321f_charbig VARCHAR(1000) 5322, PRIMARY KEY (f_int1,f_int2) 5323) 5324PARTITION BY RANGE(f_int1) 5325(PARTITION parta VALUES LESS THAN (0), 5326PARTITION partb VALUES LESS THAN (5), 5327PARTITION partc VALUES LESS THAN (10), 5328PARTITION partd VALUES LESS THAN (10 + 5), 5329PARTITION parte VALUES LESS THAN (20), 5330PARTITION partf VALUES LESS THAN (2147483646)); 5331INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5332SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5333WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 5334ALTER TABLE t1 MODIFY f_int2 BIGINT; 5335INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5336SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5337WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 5338# Start usability test (inc/partition_check.inc) 5339create_command 5340SHOW CREATE TABLE t1; 5341Table Create Table 5342t1 CREATE TABLE `t1` ( 5343 `f_int1` int(11) NOT NULL, 5344 `f_int2` bigint(20) NOT NULL, 5345 `f_char1` char(20) DEFAULT NULL, 5346 `f_char2` char(20) DEFAULT NULL, 5347 `f_charbig` varchar(1000) DEFAULT NULL, 5348 PRIMARY KEY (`f_int1`,`f_int2`) 5349) ENGINE=TokuDB DEFAULT CHARSET=latin1 5350/*!50100 PARTITION BY RANGE (f_int1) 5351(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 5352 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 5353 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 5354 PARTITION partd VALUES LESS THAN (15) ENGINE = TokuDB, 5355 PARTITION parte VALUES LESS THAN (20) ENGINE = TokuDB, 5356 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 5357 5358# check prerequisites-1 success: 1 5359# check COUNT(*) success: 1 5360# check MIN/MAX(f_int1) success: 1 5361# check MIN/MAX(f_int2) success: 1 5362INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5363SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5364CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5365WHERE f_int1 IN (2,3); 5366ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 5367# check prerequisites-3 success: 1 5368# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 5369INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5370SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5371CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5372WHERE f_int1 IN (2,3); 5373DELETE FROM t1 WHERE f_charbig = 'delete me'; 5374INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5375SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5376CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5377WHERE f_int1 IN (2,3); 5378DELETE FROM t1 WHERE f_charbig = 'delete me'; 5379# check read via f_int1 success: 1 5380# check read via f_int2 success: 1 5381 5382# check multiple-1 success: 1 5383DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5384 5385# check multiple-2 success: 1 5386INSERT INTO t1 SELECT * FROM t0_template 5387WHERE MOD(f_int1,3) = 0; 5388 5389# check multiple-3 success: 1 5390UPDATE t1 SET f_int1 = f_int1 + @max_row 5391WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 5392AND @max_row_div2 + @max_row_div4; 5393 5394# check multiple-4 success: 1 5395DELETE FROM t1 5396WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 5397AND @max_row_div2 + @max_row_div4 + @max_row; 5398 5399# check multiple-5 success: 1 5400SELECT COUNT(*) INTO @try_count FROM t0_template 5401WHERE MOD(f_int1,3) = 0 5402AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5403SELECT COUNT(*) INTO @clash_count 5404FROM t1 INNER JOIN t0_template USING(f_int1) 5405WHERE MOD(f_int1,3) = 0 5406AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5407SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 5408INSERT INTO t1 5409SET f_int1 = @cur_value , f_int2 = @cur_value, 5410f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5411f_charbig = '#SINGLE#'; 5412 5413# check single-1 success: 1 5414SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 5415INSERT INTO t1 5416SET f_int1 = @cur_value , f_int2 = @cur_value, 5417f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5418f_charbig = '#SINGLE#'; 5419 5420# check single-2 success: 1 5421SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 5422SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 5423UPDATE t1 SET f_int1 = @cur_value2 5424WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 5425 5426# check single-3 success: 1 5427SET @cur_value1= -1; 5428SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 5429UPDATE t1 SET f_int1 = @cur_value1 5430WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 5431 5432# check single-4 success: 1 5433SELECT MAX(f_int1) INTO @cur_value FROM t1; 5434DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 5435 5436# check single-5 success: 1 5437DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 5438 5439# check single-6 success: 1 5440INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 5441ERROR HY000: Table has no partition for value 2147483647 5442DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 5443INSERT t1 SET f_int1 = 0 , f_int2 = 0, 5444f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 5445f_charbig = '#NULL#'; 5446INSERT INTO t1 5447SET f_int1 = NULL , f_int2 = -@max_row, 5448f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 5449f_charbig = '#NULL#'; 5450ERROR 23000: Column 'f_int1' cannot be null 5451# check null success: 1 5452DELETE FROM t1 5453WHERE f_int1 = 0 AND f_int2 = 0 5454AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5455AND f_charbig = '#NULL#'; 5456INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5457SELECT f_int1, f_int1, '', '', 'was inserted' 5458 FROM t0_template source_tab 5459WHERE MOD(f_int1,3) = 0 5460AND f_int1 BETWEEN @max_row_div2 AND @max_row 5461ON DUPLICATE KEY 5462UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 5463f_int2 = 2 * @max_row + source_tab.f_int1, 5464f_charbig = 'was updated'; 5465 5466# check unique-1-a success: 1 5467 5468# check unique-1-b success: 1 5469DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5470UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5471f_int2 = CAST(f_char1 AS SIGNED INT), 5472f_charbig = CONCAT('===',f_char1,'===') 5473WHERE f_charbig = 'was updated'; 5474REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5475SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 5476 FROM t0_template source_tab 5477WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5478 5479# check replace success: 1 5480DELETE FROM t1 5481WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 5482DELETE FROM t1 5483WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 5484f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 5485UPDATE t1 SET f_int2 = f_int1, 5486f_char1 = CAST(f_int1 AS CHAR), 5487f_char2 = CAST(f_int1 AS CHAR), 5488f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 5489WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 5490SET AUTOCOMMIT= 0; 5491INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5492SELECT f_int1, f_int1, '', '', 'was inserted' 5493FROM t0_template source_tab 5494WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5495 5496# check transactions-1 success: 1 5497COMMIT WORK; 5498 5499# check transactions-2 success: 1 5500ROLLBACK WORK; 5501 5502# check transactions-3 success: 1 5503DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5504COMMIT WORK; 5505ROLLBACK WORK; 5506 5507# check transactions-4 success: 1 5508INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5509SELECT f_int1, f_int1, '', '', 'was inserted' 5510FROM t0_template source_tab 5511WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5512 5513# check transactions-5 success: 1 5514ROLLBACK WORK; 5515 5516# check transactions-6 success: 1 5517# INFO: Storage engine used for t1 seems to be transactional. 5518COMMIT; 5519 5520# check transactions-7 success: 1 5521DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5522COMMIT WORK; 5523SET @@session.sql_mode = 'traditional'; 5524Warnings: 5525Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5526SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 5527INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5528SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 5529'', '', 'was inserted' FROM t0_template 5530WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 5531ERROR 22012: Division by 0 5532COMMIT; 5533 5534# check transactions-8 success: 1 5535# INFO: Storage engine used for t1 seems to be able to revert 5536# changes made by the failing statement. 5537SET @@session.sql_mode = ''; 5538Warnings: 5539Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 5540SET AUTOCOMMIT= 1; 5541DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5542COMMIT WORK; 5543UPDATE t1 SET f_charbig = REPEAT('b', 1000); 5544 5545# check special-1 success: 1 5546UPDATE t1 SET f_charbig = ''; 5547 5548# check special-2 success: 1 5549UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 5550INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5551SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 5552WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5553INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5554SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5555'just inserted' FROM t0_template 5556WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5557CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 5558BEGIN 5559UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5560f_charbig = 'updated by trigger' 5561 WHERE f_int1 = new.f_int1; 5562END| 5563INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5564SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5565WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5566 5567# check trigger-1 success: 1 5568DROP TRIGGER trg_1; 5569UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5570f_int2 = CAST(f_char1 AS SIGNED INT), 5571f_charbig = 'just inserted' 5572 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5573DELETE FROM t0_aux 5574WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5575INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5576SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5577'just inserted' FROM t0_template 5578WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5579CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 5580BEGIN 5581UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5582f_charbig = 'updated by trigger' 5583 WHERE f_int1 = new.f_int1; 5584END| 5585INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5586SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 5587WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5588 5589# check trigger-2 success: 1 5590DROP TRIGGER trg_1; 5591UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5592f_int2 = CAST(f_char1 AS SIGNED INT), 5593f_charbig = 'just inserted' 5594 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5595DELETE FROM t0_aux 5596WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5597INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5598SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5599'just inserted' FROM t0_template 5600WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5601CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5602BEGIN 5603UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5604f_charbig = 'updated by trigger' 5605 WHERE f_int1 = new.f_int1; 5606END| 5607UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5608WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5609 5610# check trigger-3 success: 1 5611DROP TRIGGER trg_1; 5612UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5613f_int2 = CAST(f_char1 AS SIGNED INT), 5614f_charbig = 'just inserted' 5615 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5616DELETE FROM t0_aux 5617WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5618INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5619SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5620'just inserted' FROM t0_template 5621WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5622CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 5623BEGIN 5624UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5625f_charbig = 'updated by trigger' 5626 WHERE f_int1 = - old.f_int1; 5627END| 5628UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5629WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5630 5631# check trigger-4 success: 1 5632DROP TRIGGER trg_1; 5633UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5634f_int2 = CAST(f_char1 AS SIGNED INT), 5635f_charbig = 'just inserted' 5636 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5637DELETE FROM t0_aux 5638WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5639INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5640SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5641'just inserted' FROM t0_template 5642WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5643CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5644BEGIN 5645UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5646f_charbig = 'updated by trigger' 5647 WHERE f_int1 = new.f_int1; 5648END| 5649UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5650WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5651 5652# check trigger-5 success: 1 5653DROP TRIGGER trg_1; 5654UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5655f_int2 = CAST(f_char1 AS SIGNED INT), 5656f_charbig = 'just inserted' 5657 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5658DELETE FROM t0_aux 5659WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5660INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5661SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5662'just inserted' FROM t0_template 5663WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5664CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 5665BEGIN 5666UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5667f_charbig = 'updated by trigger' 5668 WHERE f_int1 = - old.f_int1; 5669END| 5670UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 5671WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5672 5673# check trigger-6 success: 1 5674DROP TRIGGER trg_1; 5675UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5676f_int2 = CAST(f_char1 AS SIGNED INT), 5677f_charbig = 'just inserted' 5678 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5679DELETE FROM t0_aux 5680WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5681INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5682SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5683'just inserted' FROM t0_template 5684WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5685CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 5686BEGIN 5687UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5688f_charbig = 'updated by trigger' 5689 WHERE f_int1 = - old.f_int1; 5690END| 5691DELETE FROM t0_aux 5692WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5693 5694# check trigger-7 success: 1 5695DROP TRIGGER trg_1; 5696UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5697f_int2 = CAST(f_char1 AS SIGNED INT), 5698f_charbig = 'just inserted' 5699 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5700DELETE FROM t0_aux 5701WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5702INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 5703SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 5704'just inserted' FROM t0_template 5705WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5706CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 5707BEGIN 5708UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 5709f_charbig = 'updated by trigger' 5710 WHERE f_int1 = - old.f_int1; 5711END| 5712DELETE FROM t0_aux 5713WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 5714 5715# check trigger-8 success: 1 5716DROP TRIGGER trg_1; 5717UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5718f_int2 = CAST(f_char1 AS SIGNED INT), 5719f_charbig = 'just inserted' 5720 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 5721DELETE FROM t0_aux 5722WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5723DELETE FROM t1 5724WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 5725CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5726BEGIN 5727SET new.f_int1 = old.f_int1 + @max_row, 5728new.f_int2 = old.f_int2 - @max_row, 5729new.f_charbig = '####updated per update trigger####'; 5730END| 5731UPDATE t1 5732SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5733f_charbig = '####updated per update statement itself####'; 5734 5735# check trigger-9 success: 1 5736DROP TRIGGER trg_2; 5737UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5738f_int2 = CAST(f_char1 AS SIGNED INT), 5739f_charbig = CONCAT('===',f_char1,'==='); 5740CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 5741BEGIN 5742SET new.f_int1 = new.f_int1 + @max_row, 5743new.f_int2 = new.f_int2 - @max_row, 5744new.f_charbig = '####updated per update trigger####'; 5745END| 5746UPDATE t1 5747SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 5748f_charbig = '####updated per update statement itself####'; 5749 5750# check trigger-10 success: 1 5751DROP TRIGGER trg_2; 5752UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5753f_int2 = CAST(f_char1 AS SIGNED INT), 5754f_charbig = CONCAT('===',f_char1,'==='); 5755CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5756BEGIN 5757SET new.f_int1 = @my_max1 + @counter, 5758new.f_int2 = @my_min2 - @counter, 5759new.f_charbig = '####updated per insert trigger####'; 5760SET @counter = @counter + 1; 5761END| 5762SET @counter = 1; 5763SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5764INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5765SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5766CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5767WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5768ORDER BY f_int1; 5769DROP TRIGGER trg_3; 5770 5771# check trigger-11 success: 1 5772DELETE FROM t1 5773WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5774AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5775AND f_charbig = '####updated per insert trigger####'; 5776CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 5777BEGIN 5778SET new.f_int1 = @my_max1 + @counter, 5779new.f_int2 = @my_min2 - @counter, 5780new.f_charbig = '####updated per insert trigger####'; 5781SET @counter = @counter + 1; 5782END| 5783SET @counter = 1; 5784SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 5785INSERT INTO t1 (f_char1, f_char2, f_charbig) 5786SELECT CAST(f_int1 AS CHAR), 5787CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 5788WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 5789ORDER BY f_int1; 5790DROP TRIGGER trg_3; 5791 5792# check trigger-12 success: 1 5793DELETE FROM t1 5794WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 5795AND f_int2 <> CAST(f_char1 AS SIGNED INT) 5796AND f_charbig = '####updated per insert trigger####'; 5797ANALYZE TABLE t1; 5798Table Op Msg_type Msg_text 5799test.t1 analyze status OK 5800CHECK TABLE t1 EXTENDED; 5801Table Op Msg_type Msg_text 5802test.t1 check status OK 5803CHECKSUM TABLE t1 EXTENDED; 5804Table Checksum 5805test.t1 <some_value> 5806OPTIMIZE TABLE t1; 5807Table Op Msg_type Msg_text 5808test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 5809test.t1 optimize status OK 5810# check layout success: 1 5811REPAIR TABLE t1 EXTENDED; 5812Table Op Msg_type Msg_text 5813test.t1 repair status OK 5814# check layout success: 1 5815TRUNCATE t1; 5816 5817# check TRUNCATE success: 1 5818# check layout success: 1 5819# End usability test (inc/partition_check.inc) 5820DROP TABLE t1; 5821CREATE TABLE t1 ( 5822f_int1 INTEGER, 5823f_int2 INTEGER, 5824f_char1 CHAR(20), 5825f_char2 CHAR(20), 5826f_charbig VARCHAR(1000) 5827, PRIMARY KEY (f_int1,f_int2) 5828) 5829PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 5830(PARTITION parta VALUES LESS THAN (0), 5831PARTITION partb VALUES LESS THAN (5), 5832PARTITION partc VALUES LESS THAN (10), 5833PARTITION partd VALUES LESS THAN (2147483646)); 5834INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5835SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5836WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 5837ALTER TABLE t1 MODIFY f_int2 BIGINT; 5838INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 5839SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 5840WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 5841# Start usability test (inc/partition_check.inc) 5842create_command 5843SHOW CREATE TABLE t1; 5844Table Create Table 5845t1 CREATE TABLE `t1` ( 5846 `f_int1` int(11) NOT NULL, 5847 `f_int2` bigint(20) NOT NULL, 5848 `f_char1` char(20) DEFAULT NULL, 5849 `f_char2` char(20) DEFAULT NULL, 5850 `f_charbig` varchar(1000) DEFAULT NULL, 5851 PRIMARY KEY (`f_int1`,`f_int2`) 5852) ENGINE=TokuDB DEFAULT CHARSET=latin1 5853/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 5854SUBPARTITION BY HASH (f_int1) 5855SUBPARTITIONS 2 5856(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 5857 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 5858 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 5859 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 5860 5861# check prerequisites-1 success: 1 5862# check COUNT(*) success: 1 5863# check MIN/MAX(f_int1) success: 1 5864# check MIN/MAX(f_int2) success: 1 5865INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5866SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 5867CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 5868WHERE f_int1 IN (2,3); 5869ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 5870# check prerequisites-3 success: 1 5871# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 5872INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5873SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5874CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5875WHERE f_int1 IN (2,3); 5876DELETE FROM t1 WHERE f_charbig = 'delete me'; 5877INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5878SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 5879CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 5880WHERE f_int1 IN (2,3); 5881DELETE FROM t1 WHERE f_charbig = 'delete me'; 5882# check read via f_int1 success: 1 5883# check read via f_int2 success: 1 5884 5885# check multiple-1 success: 1 5886DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 5887 5888# check multiple-2 success: 1 5889INSERT INTO t1 SELECT * FROM t0_template 5890WHERE MOD(f_int1,3) = 0; 5891 5892# check multiple-3 success: 1 5893UPDATE t1 SET f_int1 = f_int1 + @max_row 5894WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 5895AND @max_row_div2 + @max_row_div4; 5896 5897# check multiple-4 success: 1 5898DELETE FROM t1 5899WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 5900AND @max_row_div2 + @max_row_div4 + @max_row; 5901 5902# check multiple-5 success: 1 5903SELECT COUNT(*) INTO @try_count FROM t0_template 5904WHERE MOD(f_int1,3) = 0 5905AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5906SELECT COUNT(*) INTO @clash_count 5907FROM t1 INNER JOIN t0_template USING(f_int1) 5908WHERE MOD(f_int1,3) = 0 5909AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5910SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 5911INSERT INTO t1 5912SET f_int1 = @cur_value , f_int2 = @cur_value, 5913f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5914f_charbig = '#SINGLE#'; 5915 5916# check single-1 success: 1 5917SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 5918INSERT INTO t1 5919SET f_int1 = @cur_value , f_int2 = @cur_value, 5920f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 5921f_charbig = '#SINGLE#'; 5922 5923# check single-2 success: 1 5924SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 5925SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 5926UPDATE t1 SET f_int1 = @cur_value2 5927WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 5928 5929# check single-3 success: 1 5930SET @cur_value1= -1; 5931SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 5932UPDATE t1 SET f_int1 = @cur_value1 5933WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 5934 5935# check single-4 success: 1 5936SELECT MAX(f_int1) INTO @cur_value FROM t1; 5937DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 5938 5939# check single-5 success: 1 5940DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 5941 5942# check single-6 success: 1 5943INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 5944 5945# check single-7 success: 1 5946DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 5947DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 5948INSERT t1 SET f_int1 = 0 , f_int2 = 0, 5949f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 5950f_charbig = '#NULL#'; 5951INSERT INTO t1 5952SET f_int1 = NULL , f_int2 = -@max_row, 5953f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 5954f_charbig = '#NULL#'; 5955ERROR 23000: Column 'f_int1' cannot be null 5956# check null success: 1 5957DELETE FROM t1 5958WHERE f_int1 = 0 AND f_int2 = 0 5959AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 5960AND f_charbig = '#NULL#'; 5961INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5962SELECT f_int1, f_int1, '', '', 'was inserted' 5963 FROM t0_template source_tab 5964WHERE MOD(f_int1,3) = 0 5965AND f_int1 BETWEEN @max_row_div2 AND @max_row 5966ON DUPLICATE KEY 5967UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 5968f_int2 = 2 * @max_row + source_tab.f_int1, 5969f_charbig = 'was updated'; 5970 5971# check unique-1-a success: 1 5972 5973# check unique-1-b success: 1 5974DELETE FROM t1 WHERE f_charbig = 'was inserted'; 5975UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 5976f_int2 = CAST(f_char1 AS SIGNED INT), 5977f_charbig = CONCAT('===',f_char1,'===') 5978WHERE f_charbig = 'was updated'; 5979REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5980SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 5981 FROM t0_template source_tab 5982WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 5983 5984# check replace success: 1 5985DELETE FROM t1 5986WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 5987DELETE FROM t1 5988WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 5989f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 5990UPDATE t1 SET f_int2 = f_int1, 5991f_char1 = CAST(f_int1 AS CHAR), 5992f_char2 = CAST(f_int1 AS CHAR), 5993f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 5994WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 5995SET AUTOCOMMIT= 0; 5996INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 5997SELECT f_int1, f_int1, '', '', 'was inserted' 5998FROM t0_template source_tab 5999WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6000 6001# check transactions-1 success: 1 6002COMMIT WORK; 6003 6004# check transactions-2 success: 1 6005ROLLBACK WORK; 6006 6007# check transactions-3 success: 1 6008DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6009COMMIT WORK; 6010ROLLBACK WORK; 6011 6012# check transactions-4 success: 1 6013INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6014SELECT f_int1, f_int1, '', '', 'was inserted' 6015FROM t0_template source_tab 6016WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6017 6018# check transactions-5 success: 1 6019ROLLBACK WORK; 6020 6021# check transactions-6 success: 1 6022# INFO: Storage engine used for t1 seems to be transactional. 6023COMMIT; 6024 6025# check transactions-7 success: 1 6026DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6027COMMIT WORK; 6028SET @@session.sql_mode = 'traditional'; 6029Warnings: 6030Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6031SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6032INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6033SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6034'', '', 'was inserted' FROM t0_template 6035WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6036ERROR 22012: Division by 0 6037COMMIT; 6038 6039# check transactions-8 success: 1 6040# INFO: Storage engine used for t1 seems to be able to revert 6041# changes made by the failing statement. 6042SET @@session.sql_mode = ''; 6043Warnings: 6044Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6045SET AUTOCOMMIT= 1; 6046DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6047COMMIT WORK; 6048UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6049 6050# check special-1 success: 1 6051UPDATE t1 SET f_charbig = ''; 6052 6053# check special-2 success: 1 6054UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6055INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6056SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6057WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6059SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6060'just inserted' FROM t0_template 6061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6062CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6063BEGIN 6064UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6065f_charbig = 'updated by trigger' 6066 WHERE f_int1 = new.f_int1; 6067END| 6068INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6069SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6070WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6071 6072# check trigger-1 success: 1 6073DROP TRIGGER trg_1; 6074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6075f_int2 = CAST(f_char1 AS SIGNED INT), 6076f_charbig = 'just inserted' 6077 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6078DELETE FROM t0_aux 6079WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6080INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6081SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6082'just inserted' FROM t0_template 6083WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6084CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6085BEGIN 6086UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6087f_charbig = 'updated by trigger' 6088 WHERE f_int1 = new.f_int1; 6089END| 6090INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6091SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6092WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6093 6094# check trigger-2 success: 1 6095DROP TRIGGER trg_1; 6096UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6097f_int2 = CAST(f_char1 AS SIGNED INT), 6098f_charbig = 'just inserted' 6099 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6100DELETE FROM t0_aux 6101WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6102INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6103SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6104'just inserted' FROM t0_template 6105WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6106CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6107BEGIN 6108UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6109f_charbig = 'updated by trigger' 6110 WHERE f_int1 = new.f_int1; 6111END| 6112UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6113WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6114 6115# check trigger-3 success: 1 6116DROP TRIGGER trg_1; 6117UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6118f_int2 = CAST(f_char1 AS SIGNED INT), 6119f_charbig = 'just inserted' 6120 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6121DELETE FROM t0_aux 6122WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6123INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6124SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6125'just inserted' FROM t0_template 6126WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6127CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6128BEGIN 6129UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6130f_charbig = 'updated by trigger' 6131 WHERE f_int1 = - old.f_int1; 6132END| 6133UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6134WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6135 6136# check trigger-4 success: 1 6137DROP TRIGGER trg_1; 6138UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6139f_int2 = CAST(f_char1 AS SIGNED INT), 6140f_charbig = 'just inserted' 6141 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6142DELETE FROM t0_aux 6143WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6144INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6145SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6146'just inserted' FROM t0_template 6147WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6148CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6149BEGIN 6150UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6151f_charbig = 'updated by trigger' 6152 WHERE f_int1 = new.f_int1; 6153END| 6154UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6155WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6156 6157# check trigger-5 success: 1 6158DROP TRIGGER trg_1; 6159UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6160f_int2 = CAST(f_char1 AS SIGNED INT), 6161f_charbig = 'just inserted' 6162 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6163DELETE FROM t0_aux 6164WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6165INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6166SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6167'just inserted' FROM t0_template 6168WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6169CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6170BEGIN 6171UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6172f_charbig = 'updated by trigger' 6173 WHERE f_int1 = - old.f_int1; 6174END| 6175UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6176WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6177 6178# check trigger-6 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 DELETE 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 = - old.f_int1; 6195END| 6196DELETE FROM t0_aux 6197WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6198 6199# check trigger-7 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 AFTER DELETE 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| 6217DELETE FROM t0_aux 6218WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6219 6220# check trigger-8 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; 6228DELETE FROM t1 6229WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6230CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6231BEGIN 6232SET new.f_int1 = old.f_int1 + @max_row, 6233new.f_int2 = old.f_int2 - @max_row, 6234new.f_charbig = '####updated per update trigger####'; 6235END| 6236UPDATE t1 6237SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6238f_charbig = '####updated per update statement itself####'; 6239 6240# check trigger-9 success: 1 6241DROP TRIGGER trg_2; 6242UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6243f_int2 = CAST(f_char1 AS SIGNED INT), 6244f_charbig = CONCAT('===',f_char1,'==='); 6245CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6246BEGIN 6247SET new.f_int1 = new.f_int1 + @max_row, 6248new.f_int2 = new.f_int2 - @max_row, 6249new.f_charbig = '####updated per update trigger####'; 6250END| 6251UPDATE t1 6252SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6253f_charbig = '####updated per update statement itself####'; 6254 6255# check trigger-10 success: 1 6256DROP TRIGGER trg_2; 6257UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6258f_int2 = CAST(f_char1 AS SIGNED INT), 6259f_charbig = CONCAT('===',f_char1,'==='); 6260CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6261BEGIN 6262SET new.f_int1 = @my_max1 + @counter, 6263new.f_int2 = @my_min2 - @counter, 6264new.f_charbig = '####updated per insert trigger####'; 6265SET @counter = @counter + 1; 6266END| 6267SET @counter = 1; 6268SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6269INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6270SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6271CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6272WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6273ORDER BY f_int1; 6274DROP TRIGGER trg_3; 6275 6276# check trigger-11 success: 1 6277DELETE FROM t1 6278WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6279AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6280AND f_charbig = '####updated per insert trigger####'; 6281CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6282BEGIN 6283SET new.f_int1 = @my_max1 + @counter, 6284new.f_int2 = @my_min2 - @counter, 6285new.f_charbig = '####updated per insert trigger####'; 6286SET @counter = @counter + 1; 6287END| 6288SET @counter = 1; 6289SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6290INSERT INTO t1 (f_char1, f_char2, f_charbig) 6291SELECT CAST(f_int1 AS CHAR), 6292CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6293WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6294ORDER BY f_int1; 6295DROP TRIGGER trg_3; 6296 6297# check trigger-12 success: 1 6298DELETE FROM t1 6299WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6300AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6301AND f_charbig = '####updated per insert trigger####'; 6302ANALYZE TABLE t1; 6303Table Op Msg_type Msg_text 6304test.t1 analyze status OK 6305CHECK TABLE t1 EXTENDED; 6306Table Op Msg_type Msg_text 6307test.t1 check status OK 6308CHECKSUM TABLE t1 EXTENDED; 6309Table Checksum 6310test.t1 <some_value> 6311OPTIMIZE TABLE t1; 6312Table Op Msg_type Msg_text 6313test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 6314test.t1 optimize status OK 6315# check layout success: 1 6316REPAIR TABLE t1 EXTENDED; 6317Table Op Msg_type Msg_text 6318test.t1 repair status OK 6319# check layout success: 1 6320TRUNCATE t1; 6321 6322# check TRUNCATE success: 1 6323# check layout success: 1 6324# End usability test (inc/partition_check.inc) 6325DROP TABLE t1; 6326CREATE TABLE t1 ( 6327f_int1 INTEGER, 6328f_int2 INTEGER, 6329f_char1 CHAR(20), 6330f_char2 CHAR(20), 6331f_charbig VARCHAR(1000) 6332, PRIMARY KEY (f_int1,f_int2) 6333) 6334PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 6335(PARTITION part1 VALUES LESS THAN (0) 6336(SUBPARTITION subpart11, SUBPARTITION subpart12), 6337PARTITION part2 VALUES LESS THAN (5) 6338(SUBPARTITION subpart21, SUBPARTITION subpart22), 6339PARTITION part3 VALUES LESS THAN (10) 6340(SUBPARTITION subpart31, SUBPARTITION subpart32), 6341PARTITION part4 VALUES LESS THAN (2147483646) 6342(SUBPARTITION subpart41, SUBPARTITION subpart42)); 6343INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6344SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 6345WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 6346ALTER TABLE t1 MODIFY f_int2 BIGINT; 6347INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6348SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 6349WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 6350# Start usability test (inc/partition_check.inc) 6351create_command 6352SHOW CREATE TABLE t1; 6353Table Create Table 6354t1 CREATE TABLE `t1` ( 6355 `f_int1` int(11) NOT NULL, 6356 `f_int2` bigint(20) NOT NULL, 6357 `f_char1` char(20) DEFAULT NULL, 6358 `f_char2` char(20) DEFAULT NULL, 6359 `f_charbig` varchar(1000) DEFAULT NULL, 6360 PRIMARY KEY (`f_int1`,`f_int2`) 6361) ENGINE=TokuDB DEFAULT CHARSET=latin1 6362/*!50100 PARTITION BY RANGE (f_int1) 6363SUBPARTITION BY KEY (f_int1) 6364(PARTITION part1 VALUES LESS THAN (0) 6365 (SUBPARTITION subpart11 ENGINE = TokuDB, 6366 SUBPARTITION subpart12 ENGINE = TokuDB), 6367 PARTITION part2 VALUES LESS THAN (5) 6368 (SUBPARTITION subpart21 ENGINE = TokuDB, 6369 SUBPARTITION subpart22 ENGINE = TokuDB), 6370 PARTITION part3 VALUES LESS THAN (10) 6371 (SUBPARTITION subpart31 ENGINE = TokuDB, 6372 SUBPARTITION subpart32 ENGINE = TokuDB), 6373 PARTITION part4 VALUES LESS THAN (2147483646) 6374 (SUBPARTITION subpart41 ENGINE = TokuDB, 6375 SUBPARTITION subpart42 ENGINE = TokuDB)) */ 6376 6377# check prerequisites-1 success: 1 6378# check COUNT(*) success: 1 6379# check MIN/MAX(f_int1) success: 1 6380# check MIN/MAX(f_int2) success: 1 6381INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6382SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6383CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 6384WHERE f_int1 IN (2,3); 6385ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 6386# check prerequisites-3 success: 1 6387# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 6388INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6389SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 6390CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 6391WHERE f_int1 IN (2,3); 6392DELETE FROM t1 WHERE f_charbig = 'delete me'; 6393INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6394SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 6395CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 6396WHERE f_int1 IN (2,3); 6397DELETE FROM t1 WHERE f_charbig = 'delete me'; 6398# check read via f_int1 success: 1 6399# check read via f_int2 success: 1 6400 6401# check multiple-1 success: 1 6402DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 6403 6404# check multiple-2 success: 1 6405INSERT INTO t1 SELECT * FROM t0_template 6406WHERE MOD(f_int1,3) = 0; 6407 6408# check multiple-3 success: 1 6409UPDATE t1 SET f_int1 = f_int1 + @max_row 6410WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6411AND @max_row_div2 + @max_row_div4; 6412 6413# check multiple-4 success: 1 6414DELETE FROM t1 6415WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6416AND @max_row_div2 + @max_row_div4 + @max_row; 6417 6418# check multiple-5 success: 1 6419SELECT COUNT(*) INTO @try_count FROM t0_template 6420WHERE MOD(f_int1,3) = 0 6421AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6422SELECT COUNT(*) INTO @clash_count 6423FROM t1 INNER JOIN t0_template USING(f_int1) 6424WHERE MOD(f_int1,3) = 0 6425AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6426SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6427INSERT INTO t1 6428SET f_int1 = @cur_value , f_int2 = @cur_value, 6429f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6430f_charbig = '#SINGLE#'; 6431 6432# check single-1 success: 1 6433SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6434INSERT INTO t1 6435SET f_int1 = @cur_value , f_int2 = @cur_value, 6436f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6437f_charbig = '#SINGLE#'; 6438 6439# check single-2 success: 1 6440SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6441SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6442UPDATE t1 SET f_int1 = @cur_value2 6443WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6444 6445# check single-3 success: 1 6446SET @cur_value1= -1; 6447SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6448UPDATE t1 SET f_int1 = @cur_value1 6449WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6450 6451# check single-4 success: 1 6452SELECT MAX(f_int1) INTO @cur_value FROM t1; 6453DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6454 6455# check single-5 success: 1 6456DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6457 6458# check single-6 success: 1 6459INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6460ERROR HY000: Table has no partition for value 2147483647 6461DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6462INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6463f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6464f_charbig = '#NULL#'; 6465INSERT INTO t1 6466SET f_int1 = NULL , f_int2 = -@max_row, 6467f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6468f_charbig = '#NULL#'; 6469ERROR 23000: Column 'f_int1' cannot be null 6470# check null success: 1 6471DELETE FROM t1 6472WHERE f_int1 = 0 AND f_int2 = 0 6473AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6474AND f_charbig = '#NULL#'; 6475INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6476SELECT f_int1, f_int1, '', '', 'was inserted' 6477 FROM t0_template source_tab 6478WHERE MOD(f_int1,3) = 0 6479AND f_int1 BETWEEN @max_row_div2 AND @max_row 6480ON DUPLICATE KEY 6481UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 6482f_int2 = 2 * @max_row + source_tab.f_int1, 6483f_charbig = 'was updated'; 6484 6485# check unique-1-a success: 1 6486 6487# check unique-1-b success: 1 6488DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6489UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6490f_int2 = CAST(f_char1 AS SIGNED INT), 6491f_charbig = CONCAT('===',f_char1,'===') 6492WHERE f_charbig = 'was updated'; 6493REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6494SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 6495 FROM t0_template source_tab 6496WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6497 6498# check replace success: 1 6499DELETE FROM t1 6500WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 6501DELETE FROM t1 6502WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 6503f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 6504UPDATE t1 SET f_int2 = f_int1, 6505f_char1 = CAST(f_int1 AS CHAR), 6506f_char2 = CAST(f_int1 AS CHAR), 6507f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 6508WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 6509SET AUTOCOMMIT= 0; 6510INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6511SELECT f_int1, f_int1, '', '', 'was inserted' 6512FROM t0_template source_tab 6513WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6514 6515# check transactions-1 success: 1 6516COMMIT WORK; 6517 6518# check transactions-2 success: 1 6519ROLLBACK WORK; 6520 6521# check transactions-3 success: 1 6522DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6523COMMIT WORK; 6524ROLLBACK WORK; 6525 6526# check transactions-4 success: 1 6527INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6528SELECT f_int1, f_int1, '', '', 'was inserted' 6529FROM t0_template source_tab 6530WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6531 6532# check transactions-5 success: 1 6533ROLLBACK WORK; 6534 6535# check transactions-6 success: 1 6536# INFO: Storage engine used for t1 seems to be transactional. 6537COMMIT; 6538 6539# check transactions-7 success: 1 6540DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6541COMMIT WORK; 6542SET @@session.sql_mode = 'traditional'; 6543Warnings: 6544Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6545SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 6546INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6547SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 6548'', '', 'was inserted' FROM t0_template 6549WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 6550ERROR 22012: Division by 0 6551COMMIT; 6552 6553# check transactions-8 success: 1 6554# INFO: Storage engine used for t1 seems to be able to revert 6555# changes made by the failing statement. 6556SET @@session.sql_mode = ''; 6557Warnings: 6558Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 6559SET AUTOCOMMIT= 1; 6560DELETE FROM t1 WHERE f_charbig = 'was inserted'; 6561COMMIT WORK; 6562UPDATE t1 SET f_charbig = REPEAT('b', 1000); 6563 6564# check special-1 success: 1 6565UPDATE t1 SET f_charbig = ''; 6566 6567# check special-2 success: 1 6568UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 6569INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6570SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 6571WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6572INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6573SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6574'just inserted' FROM t0_template 6575WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6576CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 6577BEGIN 6578UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6579f_charbig = 'updated by trigger' 6580 WHERE f_int1 = new.f_int1; 6581END| 6582INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6583SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6584WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6585 6586# check trigger-1 success: 1 6587DROP TRIGGER trg_1; 6588UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6589f_int2 = CAST(f_char1 AS SIGNED INT), 6590f_charbig = 'just inserted' 6591 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6592DELETE FROM t0_aux 6593WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6594INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6595SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6596'just inserted' FROM t0_template 6597WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6598CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 6599BEGIN 6600UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6601f_charbig = 'updated by trigger' 6602 WHERE f_int1 = new.f_int1; 6603END| 6604INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6605SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 6606WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6607 6608# check trigger-2 success: 1 6609DROP TRIGGER trg_1; 6610UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6611f_int2 = CAST(f_char1 AS SIGNED INT), 6612f_charbig = 'just inserted' 6613 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6614DELETE FROM t0_aux 6615WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6616INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6617SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6618'just inserted' FROM t0_template 6619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6620CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6621BEGIN 6622UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6623f_charbig = 'updated by trigger' 6624 WHERE f_int1 = new.f_int1; 6625END| 6626UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6627WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6628 6629# check trigger-3 success: 1 6630DROP TRIGGER trg_1; 6631UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6632f_int2 = CAST(f_char1 AS SIGNED INT), 6633f_charbig = 'just inserted' 6634 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6635DELETE FROM t0_aux 6636WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6637INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6638SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6639'just inserted' FROM t0_template 6640WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6641CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 6642BEGIN 6643UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6644f_charbig = 'updated by trigger' 6645 WHERE f_int1 = - old.f_int1; 6646END| 6647UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6648WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6649 6650# check trigger-4 success: 1 6651DROP TRIGGER trg_1; 6652UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6653f_int2 = CAST(f_char1 AS SIGNED INT), 6654f_charbig = 'just inserted' 6655 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6656DELETE FROM t0_aux 6657WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6658INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6659SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6660'just inserted' FROM t0_template 6661WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6662CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6663BEGIN 6664UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6665f_charbig = 'updated by trigger' 6666 WHERE f_int1 = new.f_int1; 6667END| 6668UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6669WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6670 6671# check trigger-5 success: 1 6672DROP TRIGGER trg_1; 6673UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6674f_int2 = CAST(f_char1 AS SIGNED INT), 6675f_charbig = 'just inserted' 6676 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6677DELETE FROM t0_aux 6678WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6679INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6680SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6681'just inserted' FROM t0_template 6682WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6683CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 6684BEGIN 6685UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6686f_charbig = 'updated by trigger' 6687 WHERE f_int1 = - old.f_int1; 6688END| 6689UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 6690WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6691 6692# check trigger-6 success: 1 6693DROP TRIGGER trg_1; 6694UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6695f_int2 = CAST(f_char1 AS SIGNED INT), 6696f_charbig = 'just inserted' 6697 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6698DELETE FROM t0_aux 6699WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6700INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6701SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6702'just inserted' FROM t0_template 6703WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6704CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 6705BEGIN 6706UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6707f_charbig = 'updated by trigger' 6708 WHERE f_int1 = - old.f_int1; 6709END| 6710DELETE FROM t0_aux 6711WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6712 6713# check trigger-7 success: 1 6714DROP TRIGGER trg_1; 6715UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6716f_int2 = CAST(f_char1 AS SIGNED INT), 6717f_charbig = 'just inserted' 6718 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6719DELETE FROM t0_aux 6720WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6721INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 6722SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 6723'just inserted' FROM t0_template 6724WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6725CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 6726BEGIN 6727UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 6728f_charbig = 'updated by trigger' 6729 WHERE f_int1 = - old.f_int1; 6730END| 6731DELETE FROM t0_aux 6732WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 6733 6734# check trigger-8 success: 1 6735DROP TRIGGER trg_1; 6736UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6737f_int2 = CAST(f_char1 AS SIGNED INT), 6738f_charbig = 'just inserted' 6739 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 6740DELETE FROM t0_aux 6741WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6742DELETE FROM t1 6743WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 6744CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6745BEGIN 6746SET new.f_int1 = old.f_int1 + @max_row, 6747new.f_int2 = old.f_int2 - @max_row, 6748new.f_charbig = '####updated per update trigger####'; 6749END| 6750UPDATE t1 6751SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6752f_charbig = '####updated per update statement itself####'; 6753 6754# check trigger-9 success: 1 6755DROP TRIGGER trg_2; 6756UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6757f_int2 = CAST(f_char1 AS SIGNED INT), 6758f_charbig = CONCAT('===',f_char1,'==='); 6759CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 6760BEGIN 6761SET new.f_int1 = new.f_int1 + @max_row, 6762new.f_int2 = new.f_int2 - @max_row, 6763new.f_charbig = '####updated per update trigger####'; 6764END| 6765UPDATE t1 6766SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 6767f_charbig = '####updated per update statement itself####'; 6768 6769# check trigger-10 success: 1 6770DROP TRIGGER trg_2; 6771UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 6772f_int2 = CAST(f_char1 AS SIGNED INT), 6773f_charbig = CONCAT('===',f_char1,'==='); 6774CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6775BEGIN 6776SET new.f_int1 = @my_max1 + @counter, 6777new.f_int2 = @my_min2 - @counter, 6778new.f_charbig = '####updated per insert trigger####'; 6779SET @counter = @counter + 1; 6780END| 6781SET @counter = 1; 6782SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6783INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6784SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6785CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6786WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6787ORDER BY f_int1; 6788DROP TRIGGER trg_3; 6789 6790# check trigger-11 success: 1 6791DELETE FROM t1 6792WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6793AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6794AND f_charbig = '####updated per insert trigger####'; 6795CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 6796BEGIN 6797SET new.f_int1 = @my_max1 + @counter, 6798new.f_int2 = @my_min2 - @counter, 6799new.f_charbig = '####updated per insert trigger####'; 6800SET @counter = @counter + 1; 6801END| 6802SET @counter = 1; 6803SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 6804INSERT INTO t1 (f_char1, f_char2, f_charbig) 6805SELECT CAST(f_int1 AS CHAR), 6806CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 6807WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 6808ORDER BY f_int1; 6809DROP TRIGGER trg_3; 6810 6811# check trigger-12 success: 1 6812DELETE FROM t1 6813WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 6814AND f_int2 <> CAST(f_char1 AS SIGNED INT) 6815AND f_charbig = '####updated per insert trigger####'; 6816ANALYZE TABLE t1; 6817Table Op Msg_type Msg_text 6818test.t1 analyze status OK 6819CHECK TABLE t1 EXTENDED; 6820Table Op Msg_type Msg_text 6821test.t1 check status OK 6822CHECKSUM TABLE t1 EXTENDED; 6823Table Checksum 6824test.t1 <some_value> 6825OPTIMIZE TABLE t1; 6826Table Op Msg_type Msg_text 6827test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 6828test.t1 optimize status OK 6829# check layout success: 1 6830REPAIR TABLE t1 EXTENDED; 6831Table Op Msg_type Msg_text 6832test.t1 repair status OK 6833# check layout success: 1 6834TRUNCATE t1; 6835 6836# check TRUNCATE success: 1 6837# check layout success: 1 6838# End usability test (inc/partition_check.inc) 6839DROP TABLE t1; 6840CREATE TABLE t1 ( 6841f_int1 INTEGER, 6842f_int2 INTEGER, 6843f_char1 CHAR(20), 6844f_char2 CHAR(20), 6845f_charbig VARCHAR(1000) 6846, PRIMARY KEY (f_int1,f_int2) 6847) 6848PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 6849(PARTITION part1 VALUES IN (0) 6850(SUBPARTITION sp11, SUBPARTITION sp12), 6851PARTITION part2 VALUES IN (1) 6852(SUBPARTITION sp21, SUBPARTITION sp22), 6853PARTITION part3 VALUES IN (2) 6854(SUBPARTITION sp31, SUBPARTITION sp32), 6855PARTITION part4 VALUES IN (NULL) 6856(SUBPARTITION sp41, SUBPARTITION sp42)); 6857INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6858SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 6859WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 6860ALTER TABLE t1 MODIFY f_int2 BIGINT; 6861INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 6862SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 6863WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 6864# Start usability test (inc/partition_check.inc) 6865create_command 6866SHOW CREATE TABLE t1; 6867Table Create Table 6868t1 CREATE TABLE `t1` ( 6869 `f_int1` int(11) NOT NULL, 6870 `f_int2` bigint(20) NOT NULL, 6871 `f_char1` char(20) DEFAULT NULL, 6872 `f_char2` char(20) DEFAULT NULL, 6873 `f_charbig` varchar(1000) DEFAULT NULL, 6874 PRIMARY KEY (`f_int1`,`f_int2`) 6875) ENGINE=TokuDB DEFAULT CHARSET=latin1 6876/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 6877SUBPARTITION BY HASH (f_int1 + 1) 6878(PARTITION part1 VALUES IN (0) 6879 (SUBPARTITION sp11 ENGINE = TokuDB, 6880 SUBPARTITION sp12 ENGINE = TokuDB), 6881 PARTITION part2 VALUES IN (1) 6882 (SUBPARTITION sp21 ENGINE = TokuDB, 6883 SUBPARTITION sp22 ENGINE = TokuDB), 6884 PARTITION part3 VALUES IN (2) 6885 (SUBPARTITION sp31 ENGINE = TokuDB, 6886 SUBPARTITION sp32 ENGINE = TokuDB), 6887 PARTITION part4 VALUES IN (NULL) 6888 (SUBPARTITION sp41 ENGINE = TokuDB, 6889 SUBPARTITION sp42 ENGINE = TokuDB)) */ 6890 6891# check prerequisites-1 success: 1 6892# check COUNT(*) success: 1 6893# check MIN/MAX(f_int1) success: 1 6894# check MIN/MAX(f_int2) success: 1 6895INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6896SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 6897CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 6898WHERE f_int1 IN (2,3); 6899ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 6900# check prerequisites-3 success: 1 6901# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 6902INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6903SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 6904CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 6905WHERE f_int1 IN (2,3); 6906DELETE FROM t1 WHERE f_charbig = 'delete me'; 6907INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6908SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 6909CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 6910WHERE f_int1 IN (2,3); 6911DELETE FROM t1 WHERE f_charbig = 'delete me'; 6912# check read via f_int1 success: 1 6913# check read via f_int2 success: 1 6914 6915# check multiple-1 success: 1 6916DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 6917 6918# check multiple-2 success: 1 6919INSERT INTO t1 SELECT * FROM t0_template 6920WHERE MOD(f_int1,3) = 0; 6921 6922# check multiple-3 success: 1 6923UPDATE t1 SET f_int1 = f_int1 + @max_row 6924WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 6925AND @max_row_div2 + @max_row_div4; 6926 6927# check multiple-4 success: 1 6928DELETE FROM t1 6929WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 6930AND @max_row_div2 + @max_row_div4 + @max_row; 6931 6932# check multiple-5 success: 1 6933SELECT COUNT(*) INTO @try_count FROM t0_template 6934WHERE MOD(f_int1,3) = 0 6935AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6936SELECT COUNT(*) INTO @clash_count 6937FROM t1 INNER JOIN t0_template USING(f_int1) 6938WHERE MOD(f_int1,3) = 0 6939AND f_int1 BETWEEN @max_row_div2 AND @max_row; 6940SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 6941INSERT INTO t1 6942SET f_int1 = @cur_value , f_int2 = @cur_value, 6943f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6944f_charbig = '#SINGLE#'; 6945 6946# check single-1 success: 1 6947SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 6948INSERT INTO t1 6949SET f_int1 = @cur_value , f_int2 = @cur_value, 6950f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 6951f_charbig = '#SINGLE#'; 6952 6953# check single-2 success: 1 6954SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 6955SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 6956UPDATE t1 SET f_int1 = @cur_value2 6957WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 6958 6959# check single-3 success: 1 6960SET @cur_value1= -1; 6961SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 6962UPDATE t1 SET f_int1 = @cur_value1 6963WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 6964 6965# check single-4 success: 1 6966SELECT MAX(f_int1) INTO @cur_value FROM t1; 6967DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 6968 6969# check single-5 success: 1 6970DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 6971 6972# check single-6 success: 1 6973INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 6974 6975# check single-7 success: 1 6976DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 6977DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 6978INSERT t1 SET f_int1 = 0 , f_int2 = 0, 6979f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 6980f_charbig = '#NULL#'; 6981INSERT INTO t1 6982SET f_int1 = NULL , f_int2 = -@max_row, 6983f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 6984f_charbig = '#NULL#'; 6985ERROR 23000: Column 'f_int1' cannot be null 6986# check null success: 1 6987DELETE FROM t1 6988WHERE f_int1 = 0 AND f_int2 = 0 6989AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 6990AND f_charbig = '#NULL#'; 6991INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 6992SELECT f_int1, f_int1, '', '', 'was inserted' 6993 FROM t0_template source_tab 6994WHERE MOD(f_int1,3) = 0 6995AND f_int1 BETWEEN @max_row_div2 AND @max_row 6996ON DUPLICATE KEY 6997UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 6998f_int2 = 2 * @max_row + source_tab.f_int1, 6999f_charbig = 'was updated'; 7000 7001# check unique-1-a success: 1 7002 7003# check unique-1-b success: 1 7004DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7005UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7006f_int2 = CAST(f_char1 AS SIGNED INT), 7007f_charbig = CONCAT('===',f_char1,'===') 7008WHERE f_charbig = 'was updated'; 7009REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7010SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 7011 FROM t0_template source_tab 7012WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7013 7014# check replace success: 1 7015DELETE FROM t1 7016WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 7017DELETE FROM t1 7018WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 7019f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 7020UPDATE t1 SET f_int2 = f_int1, 7021f_char1 = CAST(f_int1 AS CHAR), 7022f_char2 = CAST(f_int1 AS CHAR), 7023f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 7024WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 7025SET AUTOCOMMIT= 0; 7026INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7027SELECT f_int1, f_int1, '', '', 'was inserted' 7028FROM t0_template source_tab 7029WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7030 7031# check transactions-1 success: 1 7032COMMIT WORK; 7033 7034# check transactions-2 success: 1 7035ROLLBACK WORK; 7036 7037# check transactions-3 success: 1 7038DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7039COMMIT WORK; 7040ROLLBACK WORK; 7041 7042# check transactions-4 success: 1 7043INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7044SELECT f_int1, f_int1, '', '', 'was inserted' 7045FROM t0_template source_tab 7046WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7047 7048# check transactions-5 success: 1 7049ROLLBACK WORK; 7050 7051# check transactions-6 success: 1 7052# INFO: Storage engine used for t1 seems to be transactional. 7053COMMIT; 7054 7055# check transactions-7 success: 1 7056DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7057COMMIT WORK; 7058SET @@session.sql_mode = 'traditional'; 7059Warnings: 7060Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7061SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7062INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7063SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7064'', '', 'was inserted' FROM t0_template 7065WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7066ERROR 22012: Division by 0 7067COMMIT; 7068 7069# check transactions-8 success: 1 7070# INFO: Storage engine used for t1 seems to be able to revert 7071# changes made by the failing statement. 7072SET @@session.sql_mode = ''; 7073Warnings: 7074Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7075SET AUTOCOMMIT= 1; 7076DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7077COMMIT WORK; 7078UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7079 7080# check special-1 success: 1 7081UPDATE t1 SET f_charbig = ''; 7082 7083# check special-2 success: 1 7084UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7085INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7086SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7087WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7088INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7089SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7090'just inserted' FROM t0_template 7091WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7092CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7093BEGIN 7094UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7095f_charbig = 'updated by trigger' 7096 WHERE f_int1 = new.f_int1; 7097END| 7098INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7099SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7100WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7101 7102# check trigger-1 success: 1 7103DROP TRIGGER trg_1; 7104UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7105f_int2 = CAST(f_char1 AS SIGNED INT), 7106f_charbig = 'just inserted' 7107 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7108DELETE FROM t0_aux 7109WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7110INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7111SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7112'just inserted' FROM t0_template 7113WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7114CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7115BEGIN 7116UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7117f_charbig = 'updated by trigger' 7118 WHERE f_int1 = new.f_int1; 7119END| 7120INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7121SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7122WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7123 7124# check trigger-2 success: 1 7125DROP TRIGGER trg_1; 7126UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7127f_int2 = CAST(f_char1 AS SIGNED INT), 7128f_charbig = 'just inserted' 7129 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7130DELETE FROM t0_aux 7131WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7132INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7133SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7134'just inserted' FROM t0_template 7135WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7136CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7137BEGIN 7138UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7139f_charbig = 'updated by trigger' 7140 WHERE f_int1 = new.f_int1; 7141END| 7142UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7143WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7144 7145# check trigger-3 success: 1 7146DROP TRIGGER trg_1; 7147UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7148f_int2 = CAST(f_char1 AS SIGNED INT), 7149f_charbig = 'just inserted' 7150 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7151DELETE FROM t0_aux 7152WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7153INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7154SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7155'just inserted' FROM t0_template 7156WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7157CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7158BEGIN 7159UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7160f_charbig = 'updated by trigger' 7161 WHERE f_int1 = - old.f_int1; 7162END| 7163UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7164WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7165 7166# check trigger-4 success: 1 7167DROP TRIGGER trg_1; 7168UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7169f_int2 = CAST(f_char1 AS SIGNED INT), 7170f_charbig = 'just inserted' 7171 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7172DELETE FROM t0_aux 7173WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7174INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7175SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7176'just inserted' FROM t0_template 7177WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7178CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7179BEGIN 7180UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7181f_charbig = 'updated by trigger' 7182 WHERE f_int1 = new.f_int1; 7183END| 7184UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7185WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7186 7187# check trigger-5 success: 1 7188DROP TRIGGER trg_1; 7189UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7190f_int2 = CAST(f_char1 AS SIGNED INT), 7191f_charbig = 'just inserted' 7192 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7193DELETE FROM t0_aux 7194WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7195INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7196SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7197'just inserted' FROM t0_template 7198WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7199CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7200BEGIN 7201UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7202f_charbig = 'updated by trigger' 7203 WHERE f_int1 = - old.f_int1; 7204END| 7205UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7206WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7207 7208# check trigger-6 success: 1 7209DROP TRIGGER trg_1; 7210UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7211f_int2 = CAST(f_char1 AS SIGNED INT), 7212f_charbig = 'just inserted' 7213 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7214DELETE FROM t0_aux 7215WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7216INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7217SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7218'just inserted' FROM t0_template 7219WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7220CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7221BEGIN 7222UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7223f_charbig = 'updated by trigger' 7224 WHERE f_int1 = - old.f_int1; 7225END| 7226DELETE FROM t0_aux 7227WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7228 7229# check trigger-7 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 DELETE 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 = - old.f_int1; 7246END| 7247DELETE FROM t0_aux 7248WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7249 7250# check trigger-8 success: 1 7251DROP TRIGGER trg_1; 7252UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7253f_int2 = CAST(f_char1 AS SIGNED INT), 7254f_charbig = 'just inserted' 7255 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7256DELETE FROM t0_aux 7257WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7258DELETE FROM t1 7259WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7260CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7261BEGIN 7262SET new.f_int1 = old.f_int1 + @max_row, 7263new.f_int2 = old.f_int2 - @max_row, 7264new.f_charbig = '####updated per update trigger####'; 7265END| 7266UPDATE t1 7267SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7268f_charbig = '####updated per update statement itself####'; 7269 7270# check trigger-9 success: 1 7271DROP TRIGGER trg_2; 7272UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7273f_int2 = CAST(f_char1 AS SIGNED INT), 7274f_charbig = CONCAT('===',f_char1,'==='); 7275CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7276BEGIN 7277SET new.f_int1 = new.f_int1 + @max_row, 7278new.f_int2 = new.f_int2 - @max_row, 7279new.f_charbig = '####updated per update trigger####'; 7280END| 7281UPDATE t1 7282SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7283f_charbig = '####updated per update statement itself####'; 7284 7285# check trigger-10 success: 1 7286DROP TRIGGER trg_2; 7287UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7288f_int2 = CAST(f_char1 AS SIGNED INT), 7289f_charbig = CONCAT('===',f_char1,'==='); 7290CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7291BEGIN 7292SET new.f_int1 = @my_max1 + @counter, 7293new.f_int2 = @my_min2 - @counter, 7294new.f_charbig = '####updated per insert trigger####'; 7295SET @counter = @counter + 1; 7296END| 7297SET @counter = 1; 7298SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7299INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7300SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7301CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7302WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7303ORDER BY f_int1; 7304DROP TRIGGER trg_3; 7305 7306# check trigger-11 success: 1 7307DELETE FROM t1 7308WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7309AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7310AND f_charbig = '####updated per insert trigger####'; 7311CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7312BEGIN 7313SET new.f_int1 = @my_max1 + @counter, 7314new.f_int2 = @my_min2 - @counter, 7315new.f_charbig = '####updated per insert trigger####'; 7316SET @counter = @counter + 1; 7317END| 7318SET @counter = 1; 7319SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7320INSERT INTO t1 (f_char1, f_char2, f_charbig) 7321SELECT CAST(f_int1 AS CHAR), 7322CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7323WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7324ORDER BY f_int1; 7325DROP TRIGGER trg_3; 7326 7327# check trigger-12 success: 1 7328DELETE FROM t1 7329WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7330AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7331AND f_charbig = '####updated per insert trigger####'; 7332ANALYZE TABLE t1; 7333Table Op Msg_type Msg_text 7334test.t1 analyze status OK 7335CHECK TABLE t1 EXTENDED; 7336Table Op Msg_type Msg_text 7337test.t1 check status OK 7338CHECKSUM TABLE t1 EXTENDED; 7339Table Checksum 7340test.t1 <some_value> 7341OPTIMIZE TABLE t1; 7342Table Op Msg_type Msg_text 7343test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 7344test.t1 optimize status OK 7345# check layout success: 1 7346REPAIR TABLE t1 EXTENDED; 7347Table Op Msg_type Msg_text 7348test.t1 repair status OK 7349# check layout success: 1 7350TRUNCATE t1; 7351 7352# check TRUNCATE success: 1 7353# check layout success: 1 7354# End usability test (inc/partition_check.inc) 7355DROP TABLE t1; 7356CREATE TABLE t1 ( 7357f_int1 INTEGER, 7358f_int2 INTEGER, 7359f_char1 CHAR(20), 7360f_char2 CHAR(20), 7361f_charbig VARCHAR(1000) 7362, PRIMARY KEY (f_int1,f_int2) 7363) 7364PARTITION BY LIST(ABS(MOD(f_int1,2))) 7365SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 7366(PARTITION part1 VALUES IN (0), 7367PARTITION part2 VALUES IN (1), 7368PARTITION part3 VALUES IN (NULL)); 7369INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7370SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7371WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 7372ALTER TABLE t1 MODIFY f_int2 BIGINT; 7373INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7374SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7375WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 7376# Start usability test (inc/partition_check.inc) 7377create_command 7378SHOW CREATE TABLE t1; 7379Table Create Table 7380t1 CREATE TABLE `t1` ( 7381 `f_int1` int(11) NOT NULL, 7382 `f_int2` bigint(20) NOT NULL, 7383 `f_char1` char(20) DEFAULT NULL, 7384 `f_char2` char(20) DEFAULT NULL, 7385 `f_charbig` varchar(1000) DEFAULT NULL, 7386 PRIMARY KEY (`f_int1`,`f_int2`) 7387) ENGINE=TokuDB DEFAULT CHARSET=latin1 7388/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 7389SUBPARTITION BY KEY (f_int1) 7390SUBPARTITIONS 3 7391(PARTITION part1 VALUES IN (0) ENGINE = TokuDB, 7392 PARTITION part2 VALUES IN (1) ENGINE = TokuDB, 7393 PARTITION part3 VALUES IN (NULL) ENGINE = TokuDB) */ 7394 7395# check prerequisites-1 success: 1 7396# check COUNT(*) success: 1 7397# check MIN/MAX(f_int1) success: 1 7398# check MIN/MAX(f_int2) success: 1 7399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7400SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7401CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7402WHERE f_int1 IN (2,3); 7403ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 7404# check prerequisites-3 success: 1 7405# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 7406INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7407SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7408CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7409WHERE f_int1 IN (2,3); 7410DELETE FROM t1 WHERE f_charbig = 'delete me'; 7411INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7412SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7413CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7414WHERE f_int1 IN (2,3); 7415DELETE FROM t1 WHERE f_charbig = 'delete me'; 7416# check read via f_int1 success: 1 7417# check read via f_int2 success: 1 7418 7419# check multiple-1 success: 1 7420DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7421 7422# check multiple-2 success: 1 7423INSERT INTO t1 SELECT * FROM t0_template 7424WHERE MOD(f_int1,3) = 0; 7425 7426# check multiple-3 success: 1 7427UPDATE t1 SET f_int1 = f_int1 + @max_row 7428WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7429AND @max_row_div2 + @max_row_div4; 7430 7431# check multiple-4 success: 1 7432DELETE FROM t1 7433WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7434AND @max_row_div2 + @max_row_div4 + @max_row; 7435 7436# check multiple-5 success: 1 7437SELECT COUNT(*) INTO @try_count FROM t0_template 7438WHERE MOD(f_int1,3) = 0 7439AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7440SELECT COUNT(*) INTO @clash_count 7441FROM t1 INNER JOIN t0_template USING(f_int1) 7442WHERE MOD(f_int1,3) = 0 7443AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7444SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7445INSERT INTO t1 7446SET f_int1 = @cur_value , f_int2 = @cur_value, 7447f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7448f_charbig = '#SINGLE#'; 7449 7450# check single-1 success: 1 7451SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7452INSERT INTO t1 7453SET f_int1 = @cur_value , f_int2 = @cur_value, 7454f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7455f_charbig = '#SINGLE#'; 7456 7457# check single-2 success: 1 7458SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7459SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7460UPDATE t1 SET f_int1 = @cur_value2 7461WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7462 7463# check single-3 success: 1 7464SET @cur_value1= -1; 7465SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7466UPDATE t1 SET f_int1 = @cur_value1 7467WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7468 7469# check single-4 success: 1 7470SELECT MAX(f_int1) INTO @cur_value FROM t1; 7471DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7472 7473# check single-5 success: 1 7474DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7475 7476# check single-6 success: 1 7477INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7478 7479# check single-7 success: 1 7480DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 7481DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7482INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7483f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7484f_charbig = '#NULL#'; 7485INSERT INTO t1 7486SET f_int1 = NULL , f_int2 = -@max_row, 7487f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7488f_charbig = '#NULL#'; 7489ERROR 23000: Column 'f_int1' cannot be null 7490# check null success: 1 7491DELETE FROM t1 7492WHERE f_int1 = 0 AND f_int2 = 0 7493AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7494AND f_charbig = '#NULL#'; 7495INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7496SELECT f_int1, f_int1, '', '', 'was inserted' 7497 FROM t0_template source_tab 7498WHERE MOD(f_int1,3) = 0 7499AND f_int1 BETWEEN @max_row_div2 AND @max_row 7500ON DUPLICATE KEY 7501UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 7502f_int2 = 2 * @max_row + source_tab.f_int1, 7503f_charbig = 'was updated'; 7504 7505# check unique-1-a success: 1 7506 7507# check unique-1-b success: 1 7508DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7509UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7510f_int2 = CAST(f_char1 AS SIGNED INT), 7511f_charbig = CONCAT('===',f_char1,'===') 7512WHERE f_charbig = 'was updated'; 7513REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7514SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 7515 FROM t0_template source_tab 7516WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7517 7518# check replace success: 1 7519DELETE FROM t1 7520WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 7521DELETE FROM t1 7522WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 7523f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 7524UPDATE t1 SET f_int2 = f_int1, 7525f_char1 = CAST(f_int1 AS CHAR), 7526f_char2 = CAST(f_int1 AS CHAR), 7527f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 7528WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 7529SET AUTOCOMMIT= 0; 7530INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7531SELECT f_int1, f_int1, '', '', 'was inserted' 7532FROM t0_template source_tab 7533WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7534 7535# check transactions-1 success: 1 7536COMMIT WORK; 7537 7538# check transactions-2 success: 1 7539ROLLBACK WORK; 7540 7541# check transactions-3 success: 1 7542DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7543COMMIT WORK; 7544ROLLBACK WORK; 7545 7546# check transactions-4 success: 1 7547INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7548SELECT f_int1, f_int1, '', '', 'was inserted' 7549FROM t0_template source_tab 7550WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7551 7552# check transactions-5 success: 1 7553ROLLBACK WORK; 7554 7555# check transactions-6 success: 1 7556# INFO: Storage engine used for t1 seems to be transactional. 7557COMMIT; 7558 7559# check transactions-7 success: 1 7560DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7561COMMIT WORK; 7562SET @@session.sql_mode = 'traditional'; 7563Warnings: 7564Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7565SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 7566INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7567SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 7568'', '', 'was inserted' FROM t0_template 7569WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 7570ERROR 22012: Division by 0 7571COMMIT; 7572 7573# check transactions-8 success: 1 7574# INFO: Storage engine used for t1 seems to be able to revert 7575# changes made by the failing statement. 7576SET @@session.sql_mode = ''; 7577Warnings: 7578Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 7579SET AUTOCOMMIT= 1; 7580DELETE FROM t1 WHERE f_charbig = 'was inserted'; 7581COMMIT WORK; 7582UPDATE t1 SET f_charbig = REPEAT('b', 1000); 7583 7584# check special-1 success: 1 7585UPDATE t1 SET f_charbig = ''; 7586 7587# check special-2 success: 1 7588UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 7589INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7590SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 7591WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7592INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7593SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7594'just inserted' FROM t0_template 7595WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7596CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 7597BEGIN 7598UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7599f_charbig = 'updated by trigger' 7600 WHERE f_int1 = new.f_int1; 7601END| 7602INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7603SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7605 7606# check trigger-1 success: 1 7607DROP TRIGGER trg_1; 7608UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7609f_int2 = CAST(f_char1 AS SIGNED INT), 7610f_charbig = 'just inserted' 7611 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7612DELETE FROM t0_aux 7613WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7614INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7615SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7616'just inserted' FROM t0_template 7617WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7618CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 7619BEGIN 7620UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7621f_charbig = 'updated by trigger' 7622 WHERE f_int1 = new.f_int1; 7623END| 7624INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7625SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 7626WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7627 7628# check trigger-2 success: 1 7629DROP TRIGGER trg_1; 7630UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7631f_int2 = CAST(f_char1 AS SIGNED INT), 7632f_charbig = 'just inserted' 7633 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7634DELETE FROM t0_aux 7635WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7636INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7637SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7638'just inserted' FROM t0_template 7639WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7640CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7641BEGIN 7642UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7643f_charbig = 'updated by trigger' 7644 WHERE f_int1 = new.f_int1; 7645END| 7646UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7647WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7648 7649# check trigger-3 success: 1 7650DROP TRIGGER trg_1; 7651UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7652f_int2 = CAST(f_char1 AS SIGNED INT), 7653f_charbig = 'just inserted' 7654 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7655DELETE FROM t0_aux 7656WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7657INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7658SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7659'just inserted' FROM t0_template 7660WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7661CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 7662BEGIN 7663UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7664f_charbig = 'updated by trigger' 7665 WHERE f_int1 = - old.f_int1; 7666END| 7667UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7668WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7669 7670# check trigger-4 success: 1 7671DROP TRIGGER trg_1; 7672UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7673f_int2 = CAST(f_char1 AS SIGNED INT), 7674f_charbig = 'just inserted' 7675 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7676DELETE FROM t0_aux 7677WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7678INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7679SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7680'just inserted' FROM t0_template 7681WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7682CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7683BEGIN 7684UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7685f_charbig = 'updated by trigger' 7686 WHERE f_int1 = new.f_int1; 7687END| 7688UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7689WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7690 7691# check trigger-5 success: 1 7692DROP TRIGGER trg_1; 7693UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7694f_int2 = CAST(f_char1 AS SIGNED INT), 7695f_charbig = 'just inserted' 7696 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7697DELETE FROM t0_aux 7698WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7699INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7700SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7701'just inserted' FROM t0_template 7702WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7703CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 7704BEGIN 7705UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7706f_charbig = 'updated by trigger' 7707 WHERE f_int1 = - old.f_int1; 7708END| 7709UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 7710WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7711 7712# check trigger-6 success: 1 7713DROP TRIGGER trg_1; 7714UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7715f_int2 = CAST(f_char1 AS SIGNED INT), 7716f_charbig = 'just inserted' 7717 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7718DELETE FROM t0_aux 7719WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7720INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7721SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7722'just inserted' FROM t0_template 7723WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7724CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 7725BEGIN 7726UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7727f_charbig = 'updated by trigger' 7728 WHERE f_int1 = - old.f_int1; 7729END| 7730DELETE FROM t0_aux 7731WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7732 7733# check trigger-7 success: 1 7734DROP TRIGGER trg_1; 7735UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7736f_int2 = CAST(f_char1 AS SIGNED INT), 7737f_charbig = 'just inserted' 7738 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7739DELETE FROM t0_aux 7740WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7741INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 7742SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 7743'just inserted' FROM t0_template 7744WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7745CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 7746BEGIN 7747UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 7748f_charbig = 'updated by trigger' 7749 WHERE f_int1 = - old.f_int1; 7750END| 7751DELETE FROM t0_aux 7752WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 7753 7754# check trigger-8 success: 1 7755DROP TRIGGER trg_1; 7756UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7757f_int2 = CAST(f_char1 AS SIGNED INT), 7758f_charbig = 'just inserted' 7759 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 7760DELETE FROM t0_aux 7761WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7762DELETE FROM t1 7763WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 7764CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7765BEGIN 7766SET new.f_int1 = old.f_int1 + @max_row, 7767new.f_int2 = old.f_int2 - @max_row, 7768new.f_charbig = '####updated per update trigger####'; 7769END| 7770UPDATE t1 7771SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7772f_charbig = '####updated per update statement itself####'; 7773 7774# check trigger-9 success: 1 7775DROP TRIGGER trg_2; 7776UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7777f_int2 = CAST(f_char1 AS SIGNED INT), 7778f_charbig = CONCAT('===',f_char1,'==='); 7779CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 7780BEGIN 7781SET new.f_int1 = new.f_int1 + @max_row, 7782new.f_int2 = new.f_int2 - @max_row, 7783new.f_charbig = '####updated per update trigger####'; 7784END| 7785UPDATE t1 7786SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 7787f_charbig = '####updated per update statement itself####'; 7788 7789# check trigger-10 success: 1 7790DROP TRIGGER trg_2; 7791UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 7792f_int2 = CAST(f_char1 AS SIGNED INT), 7793f_charbig = CONCAT('===',f_char1,'==='); 7794CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7795BEGIN 7796SET new.f_int1 = @my_max1 + @counter, 7797new.f_int2 = @my_min2 - @counter, 7798new.f_charbig = '####updated per insert trigger####'; 7799SET @counter = @counter + 1; 7800END| 7801SET @counter = 1; 7802SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7803INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7804SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7805CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7806WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7807ORDER BY f_int1; 7808DROP TRIGGER trg_3; 7809 7810# check trigger-11 success: 1 7811DELETE FROM t1 7812WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7813AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7814AND f_charbig = '####updated per insert trigger####'; 7815CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 7816BEGIN 7817SET new.f_int1 = @my_max1 + @counter, 7818new.f_int2 = @my_min2 - @counter, 7819new.f_charbig = '####updated per insert trigger####'; 7820SET @counter = @counter + 1; 7821END| 7822SET @counter = 1; 7823SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 7824INSERT INTO t1 (f_char1, f_char2, f_charbig) 7825SELECT CAST(f_int1 AS CHAR), 7826CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 7827WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 7828ORDER BY f_int1; 7829DROP TRIGGER trg_3; 7830 7831# check trigger-12 success: 1 7832DELETE FROM t1 7833WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 7834AND f_int2 <> CAST(f_char1 AS SIGNED INT) 7835AND f_charbig = '####updated per insert trigger####'; 7836ANALYZE TABLE t1; 7837Table Op Msg_type Msg_text 7838test.t1 analyze status OK 7839CHECK TABLE t1 EXTENDED; 7840Table Op Msg_type Msg_text 7841test.t1 check status OK 7842CHECKSUM TABLE t1 EXTENDED; 7843Table Checksum 7844test.t1 <some_value> 7845OPTIMIZE TABLE t1; 7846Table Op Msg_type Msg_text 7847test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 7848test.t1 optimize status OK 7849# check layout success: 1 7850REPAIR TABLE t1 EXTENDED; 7851Table Op Msg_type Msg_text 7852test.t1 repair status OK 7853# check layout success: 1 7854TRUNCATE t1; 7855 7856# check TRUNCATE success: 1 7857# check layout success: 1 7858# End usability test (inc/partition_check.inc) 7859DROP TABLE t1; 7860DROP TABLE IF EXISTS t1; 7861CREATE TABLE t1 ( 7862f_int1 INTEGER, 7863f_int2 INTEGER, 7864f_char1 CHAR(20), 7865f_char2 CHAR(20), 7866f_charbig VARCHAR(1000) 7867, PRIMARY KEY (f_int2,f_int1) 7868) 7869PARTITION BY HASH(f_int1) PARTITIONS 2; 7870INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7871SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7872WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 7873ALTER TABLE t1 MODIFY f_int2 BIGINT; 7874INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 7875SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 7876WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 7877# Start usability test (inc/partition_check.inc) 7878create_command 7879SHOW CREATE TABLE t1; 7880Table Create Table 7881t1 CREATE TABLE `t1` ( 7882 `f_int1` int(11) NOT NULL, 7883 `f_int2` bigint(20) NOT NULL, 7884 `f_char1` char(20) DEFAULT NULL, 7885 `f_char2` char(20) DEFAULT NULL, 7886 `f_charbig` varchar(1000) DEFAULT NULL, 7887 PRIMARY KEY (`f_int2`,`f_int1`) 7888) ENGINE=TokuDB DEFAULT CHARSET=latin1 7889/*!50100 PARTITION BY HASH (f_int1) 7890PARTITIONS 2 */ 7891 7892# check prerequisites-1 success: 1 7893# check COUNT(*) success: 1 7894# check MIN/MAX(f_int1) success: 1 7895# check MIN/MAX(f_int2) success: 1 7896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7897SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 7898CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 7899WHERE f_int1 IN (2,3); 7900ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 7901# check prerequisites-3 success: 1 7902# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 7903INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7904SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7905CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7906WHERE f_int1 IN (2,3); 7907DELETE FROM t1 WHERE f_charbig = 'delete me'; 7908INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7909SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 7910CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 7911WHERE f_int1 IN (2,3); 7912DELETE FROM t1 WHERE f_charbig = 'delete me'; 7913# check read via f_int1 success: 1 7914# check read via f_int2 success: 1 7915 7916# check multiple-1 success: 1 7917DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 7918 7919# check multiple-2 success: 1 7920INSERT INTO t1 SELECT * FROM t0_template 7921WHERE MOD(f_int1,3) = 0; 7922 7923# check multiple-3 success: 1 7924UPDATE t1 SET f_int1 = f_int1 + @max_row 7925WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 7926AND @max_row_div2 + @max_row_div4; 7927 7928# check multiple-4 success: 1 7929DELETE FROM t1 7930WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 7931AND @max_row_div2 + @max_row_div4 + @max_row; 7932 7933# check multiple-5 success: 1 7934SELECT COUNT(*) INTO @try_count FROM t0_template 7935WHERE MOD(f_int1,3) = 0 7936AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7937SELECT COUNT(*) INTO @clash_count 7938FROM t1 INNER JOIN t0_template USING(f_int1) 7939WHERE MOD(f_int1,3) = 0 7940AND f_int1 BETWEEN @max_row_div2 AND @max_row; 7941SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 7942INSERT INTO t1 7943SET f_int1 = @cur_value , f_int2 = @cur_value, 7944f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7945f_charbig = '#SINGLE#'; 7946 7947# check single-1 success: 1 7948SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 7949INSERT INTO t1 7950SET f_int1 = @cur_value , f_int2 = @cur_value, 7951f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 7952f_charbig = '#SINGLE#'; 7953 7954# check single-2 success: 1 7955SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 7956SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 7957UPDATE t1 SET f_int1 = @cur_value2 7958WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 7959 7960# check single-3 success: 1 7961SET @cur_value1= -1; 7962SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 7963UPDATE t1 SET f_int1 = @cur_value1 7964WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 7965 7966# check single-4 success: 1 7967SELECT MAX(f_int1) INTO @cur_value FROM t1; 7968DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 7969 7970# check single-5 success: 1 7971DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 7972 7973# check single-6 success: 1 7974INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 7975 7976# check single-7 success: 1 7977DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 7978DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 7979INSERT t1 SET f_int1 = 0 , f_int2 = 0, 7980f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 7981f_charbig = '#NULL#'; 7982INSERT INTO t1 7983SET f_int1 = NULL , f_int2 = -@max_row, 7984f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 7985f_charbig = '#NULL#'; 7986ERROR 23000: Column 'f_int1' cannot be null 7987# check null success: 1 7988DELETE FROM t1 7989WHERE f_int1 = 0 AND f_int2 = 0 7990AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 7991AND f_charbig = '#NULL#'; 7992INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 7993SELECT f_int1, f_int1, '', '', 'was inserted' 7994 FROM t0_template source_tab 7995WHERE MOD(f_int1,3) = 0 7996AND f_int1 BETWEEN @max_row_div2 AND @max_row 7997ON DUPLICATE KEY 7998UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 7999f_int2 = 2 * @max_row + source_tab.f_int1, 8000f_charbig = 'was updated'; 8001 8002# check unique-1-a success: 1 8003 8004# check unique-1-b success: 1 8005DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8006UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8007f_int2 = CAST(f_char1 AS SIGNED INT), 8008f_charbig = CONCAT('===',f_char1,'===') 8009WHERE f_charbig = 'was updated'; 8010REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8011SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8012 FROM t0_template source_tab 8013WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8014 8015# check replace success: 1 8016DELETE FROM t1 8017WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8018DELETE FROM t1 8019WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8020f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8021UPDATE t1 SET f_int2 = f_int1, 8022f_char1 = CAST(f_int1 AS CHAR), 8023f_char2 = CAST(f_int1 AS CHAR), 8024f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8025WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8026SET AUTOCOMMIT= 0; 8027INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8028SELECT f_int1, f_int1, '', '', 'was inserted' 8029FROM t0_template source_tab 8030WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8031 8032# check transactions-1 success: 1 8033COMMIT WORK; 8034 8035# check transactions-2 success: 1 8036ROLLBACK WORK; 8037 8038# check transactions-3 success: 1 8039DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8040COMMIT WORK; 8041ROLLBACK WORK; 8042 8043# check transactions-4 success: 1 8044INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8045SELECT f_int1, f_int1, '', '', 'was inserted' 8046FROM t0_template source_tab 8047WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8048 8049# check transactions-5 success: 1 8050ROLLBACK WORK; 8051 8052# check transactions-6 success: 1 8053# INFO: Storage engine used for t1 seems to be transactional. 8054COMMIT; 8055 8056# check transactions-7 success: 1 8057DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8058COMMIT WORK; 8059SET @@session.sql_mode = 'traditional'; 8060Warnings: 8061Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8062SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8063INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8064SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8065'', '', 'was inserted' FROM t0_template 8066WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8067ERROR 22012: Division by 0 8068COMMIT; 8069 8070# check transactions-8 success: 1 8071# INFO: Storage engine used for t1 seems to be able to revert 8072# changes made by the failing statement. 8073SET @@session.sql_mode = ''; 8074Warnings: 8075Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8076SET AUTOCOMMIT= 1; 8077DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8078COMMIT WORK; 8079UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8080 8081# check special-1 success: 1 8082UPDATE t1 SET f_charbig = ''; 8083 8084# check special-2 success: 1 8085UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8086INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8087SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8088WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8089INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8090SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8091'just inserted' FROM t0_template 8092WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8093CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8094BEGIN 8095UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8096f_charbig = 'updated by trigger' 8097 WHERE f_int1 = new.f_int1; 8098END| 8099INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8100SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8101WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8102 8103# check trigger-1 success: 1 8104DROP TRIGGER trg_1; 8105UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8106f_int2 = CAST(f_char1 AS SIGNED INT), 8107f_charbig = 'just inserted' 8108 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8109DELETE FROM t0_aux 8110WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8111INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8112SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8113'just inserted' FROM t0_template 8114WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8115CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8116BEGIN 8117UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8118f_charbig = 'updated by trigger' 8119 WHERE f_int1 = new.f_int1; 8120END| 8121INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8122SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8123WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8124 8125# check trigger-2 success: 1 8126DROP TRIGGER trg_1; 8127UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8128f_int2 = CAST(f_char1 AS SIGNED INT), 8129f_charbig = 'just inserted' 8130 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8131DELETE FROM t0_aux 8132WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8133INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8134SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8135'just inserted' FROM t0_template 8136WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8137CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8138BEGIN 8139UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8140f_charbig = 'updated by trigger' 8141 WHERE f_int1 = new.f_int1; 8142END| 8143UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8144WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8145 8146# check trigger-3 success: 1 8147DROP TRIGGER trg_1; 8148UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8149f_int2 = CAST(f_char1 AS SIGNED INT), 8150f_charbig = 'just inserted' 8151 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8152DELETE FROM t0_aux 8153WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8154INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8155SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8156'just inserted' FROM t0_template 8157WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8158CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8159BEGIN 8160UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8161f_charbig = 'updated by trigger' 8162 WHERE f_int1 = - old.f_int1; 8163END| 8164UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8165WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8166 8167# check trigger-4 success: 1 8168DROP TRIGGER trg_1; 8169UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8170f_int2 = CAST(f_char1 AS SIGNED INT), 8171f_charbig = 'just inserted' 8172 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8173DELETE FROM t0_aux 8174WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8175INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8176SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8177'just inserted' FROM t0_template 8178WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8179CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8180BEGIN 8181UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8182f_charbig = 'updated by trigger' 8183 WHERE f_int1 = new.f_int1; 8184END| 8185UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8186WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8187 8188# check trigger-5 success: 1 8189DROP TRIGGER trg_1; 8190UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8191f_int2 = CAST(f_char1 AS SIGNED INT), 8192f_charbig = 'just inserted' 8193 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8194DELETE FROM t0_aux 8195WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8196INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8197SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8198'just inserted' FROM t0_template 8199WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8200CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8201BEGIN 8202UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8203f_charbig = 'updated by trigger' 8204 WHERE f_int1 = - old.f_int1; 8205END| 8206UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8207WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8208 8209# check trigger-6 success: 1 8210DROP TRIGGER trg_1; 8211UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8212f_int2 = CAST(f_char1 AS SIGNED INT), 8213f_charbig = 'just inserted' 8214 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8215DELETE FROM t0_aux 8216WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8217INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8218SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8219'just inserted' FROM t0_template 8220WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8221CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8222BEGIN 8223UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8224f_charbig = 'updated by trigger' 8225 WHERE f_int1 = - old.f_int1; 8226END| 8227DELETE FROM t0_aux 8228WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8229 8230# check trigger-7 success: 1 8231DROP TRIGGER trg_1; 8232UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8233f_int2 = CAST(f_char1 AS SIGNED INT), 8234f_charbig = 'just inserted' 8235 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8236DELETE FROM t0_aux 8237WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8238INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8239SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8240'just inserted' FROM t0_template 8241WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8242CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8243BEGIN 8244UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8245f_charbig = 'updated by trigger' 8246 WHERE f_int1 = - old.f_int1; 8247END| 8248DELETE FROM t0_aux 8249WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8250 8251# check trigger-8 success: 1 8252DROP TRIGGER trg_1; 8253UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8254f_int2 = CAST(f_char1 AS SIGNED INT), 8255f_charbig = 'just inserted' 8256 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8257DELETE FROM t0_aux 8258WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8259DELETE FROM t1 8260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8261CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8262BEGIN 8263SET new.f_int1 = old.f_int1 + @max_row, 8264new.f_int2 = old.f_int2 - @max_row, 8265new.f_charbig = '####updated per update trigger####'; 8266END| 8267UPDATE t1 8268SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8269f_charbig = '####updated per update statement itself####'; 8270 8271# check trigger-9 success: 1 8272DROP TRIGGER trg_2; 8273UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8274f_int2 = CAST(f_char1 AS SIGNED INT), 8275f_charbig = CONCAT('===',f_char1,'==='); 8276CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8277BEGIN 8278SET new.f_int1 = new.f_int1 + @max_row, 8279new.f_int2 = new.f_int2 - @max_row, 8280new.f_charbig = '####updated per update trigger####'; 8281END| 8282UPDATE t1 8283SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8284f_charbig = '####updated per update statement itself####'; 8285 8286# check trigger-10 success: 1 8287DROP TRIGGER trg_2; 8288UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8289f_int2 = CAST(f_char1 AS SIGNED INT), 8290f_charbig = CONCAT('===',f_char1,'==='); 8291CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8292BEGIN 8293SET new.f_int1 = @my_max1 + @counter, 8294new.f_int2 = @my_min2 - @counter, 8295new.f_charbig = '####updated per insert trigger####'; 8296SET @counter = @counter + 1; 8297END| 8298SET @counter = 1; 8299SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8300INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8301SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8302CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8303WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8304ORDER BY f_int1; 8305DROP TRIGGER trg_3; 8306 8307# check trigger-11 success: 1 8308DELETE FROM t1 8309WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8310AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8311AND f_charbig = '####updated per insert trigger####'; 8312CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8313BEGIN 8314SET new.f_int1 = @my_max1 + @counter, 8315new.f_int2 = @my_min2 - @counter, 8316new.f_charbig = '####updated per insert trigger####'; 8317SET @counter = @counter + 1; 8318END| 8319SET @counter = 1; 8320SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8321INSERT INTO t1 (f_char1, f_char2, f_charbig) 8322SELECT CAST(f_int1 AS CHAR), 8323CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8325ORDER BY f_int1; 8326DROP TRIGGER trg_3; 8327 8328# check trigger-12 success: 1 8329DELETE FROM t1 8330WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8331AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8332AND f_charbig = '####updated per insert trigger####'; 8333ANALYZE TABLE t1; 8334Table Op Msg_type Msg_text 8335test.t1 analyze status OK 8336CHECK TABLE t1 EXTENDED; 8337Table Op Msg_type Msg_text 8338test.t1 check status OK 8339CHECKSUM TABLE t1 EXTENDED; 8340Table Checksum 8341test.t1 <some_value> 8342OPTIMIZE TABLE t1; 8343Table Op Msg_type Msg_text 8344test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 8345test.t1 optimize status OK 8346# check layout success: 1 8347REPAIR TABLE t1 EXTENDED; 8348Table Op Msg_type Msg_text 8349test.t1 repair status OK 8350# check layout success: 1 8351TRUNCATE t1; 8352 8353# check TRUNCATE success: 1 8354# check layout success: 1 8355# End usability test (inc/partition_check.inc) 8356DROP TABLE t1; 8357CREATE TABLE t1 ( 8358f_int1 INTEGER, 8359f_int2 INTEGER, 8360f_char1 CHAR(20), 8361f_char2 CHAR(20), 8362f_charbig VARCHAR(1000) 8363, PRIMARY KEY (f_int2,f_int1) 8364) 8365PARTITION BY KEY(f_int1) PARTITIONS 5; 8366INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8367SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8368WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 8369ALTER TABLE t1 MODIFY f_int2 BIGINT; 8370INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8371SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8372WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 8373# Start usability test (inc/partition_check.inc) 8374create_command 8375SHOW CREATE TABLE t1; 8376Table Create Table 8377t1 CREATE TABLE `t1` ( 8378 `f_int1` int(11) NOT NULL, 8379 `f_int2` bigint(20) NOT NULL, 8380 `f_char1` char(20) DEFAULT NULL, 8381 `f_char2` char(20) DEFAULT NULL, 8382 `f_charbig` varchar(1000) DEFAULT NULL, 8383 PRIMARY KEY (`f_int2`,`f_int1`) 8384) ENGINE=TokuDB DEFAULT CHARSET=latin1 8385/*!50100 PARTITION BY KEY (f_int1) 8386PARTITIONS 5 */ 8387 8388# check prerequisites-1 success: 1 8389# check COUNT(*) success: 1 8390# check MIN/MAX(f_int1) success: 1 8391# check MIN/MAX(f_int2) success: 1 8392INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8393SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8394CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8395WHERE f_int1 IN (2,3); 8396ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 8397# check prerequisites-3 success: 1 8398# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8399INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8400SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8401CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8402WHERE f_int1 IN (2,3); 8403DELETE FROM t1 WHERE f_charbig = 'delete me'; 8404INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8405SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8406CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8407WHERE f_int1 IN (2,3); 8408DELETE FROM t1 WHERE f_charbig = 'delete me'; 8409# check read via f_int1 success: 1 8410# check read via f_int2 success: 1 8411 8412# check multiple-1 success: 1 8413DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8414 8415# check multiple-2 success: 1 8416INSERT INTO t1 SELECT * FROM t0_template 8417WHERE MOD(f_int1,3) = 0; 8418 8419# check multiple-3 success: 1 8420UPDATE t1 SET f_int1 = f_int1 + @max_row 8421WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8422AND @max_row_div2 + @max_row_div4; 8423 8424# check multiple-4 success: 1 8425DELETE FROM t1 8426WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8427AND @max_row_div2 + @max_row_div4 + @max_row; 8428 8429# check multiple-5 success: 1 8430SELECT COUNT(*) INTO @try_count FROM t0_template 8431WHERE MOD(f_int1,3) = 0 8432AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8433SELECT COUNT(*) INTO @clash_count 8434FROM t1 INNER JOIN t0_template USING(f_int1) 8435WHERE MOD(f_int1,3) = 0 8436AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8437SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8438INSERT INTO t1 8439SET f_int1 = @cur_value , f_int2 = @cur_value, 8440f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8441f_charbig = '#SINGLE#'; 8442 8443# check single-1 success: 1 8444SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8445INSERT INTO t1 8446SET f_int1 = @cur_value , f_int2 = @cur_value, 8447f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8448f_charbig = '#SINGLE#'; 8449 8450# check single-2 success: 1 8451SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8452SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8453UPDATE t1 SET f_int1 = @cur_value2 8454WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8455 8456# check single-3 success: 1 8457SET @cur_value1= -1; 8458SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8459UPDATE t1 SET f_int1 = @cur_value1 8460WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8461 8462# check single-4 success: 1 8463SELECT MAX(f_int1) INTO @cur_value FROM t1; 8464DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8465 8466# check single-5 success: 1 8467DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8468 8469# check single-6 success: 1 8470INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8471 8472# check single-7 success: 1 8473DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8474DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8475INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8476f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8477f_charbig = '#NULL#'; 8478INSERT INTO t1 8479SET f_int1 = NULL , f_int2 = -@max_row, 8480f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8481f_charbig = '#NULL#'; 8482ERROR 23000: Column 'f_int1' cannot be null 8483# check null success: 1 8484DELETE FROM t1 8485WHERE f_int1 = 0 AND f_int2 = 0 8486AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8487AND f_charbig = '#NULL#'; 8488INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8489SELECT f_int1, f_int1, '', '', 'was inserted' 8490 FROM t0_template source_tab 8491WHERE MOD(f_int1,3) = 0 8492AND f_int1 BETWEEN @max_row_div2 AND @max_row 8493ON DUPLICATE KEY 8494UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 8495f_int2 = 2 * @max_row + source_tab.f_int1, 8496f_charbig = 'was updated'; 8497 8498# check unique-1-a success: 1 8499 8500# check unique-1-b success: 1 8501DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8502UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8503f_int2 = CAST(f_char1 AS SIGNED INT), 8504f_charbig = CONCAT('===',f_char1,'===') 8505WHERE f_charbig = 'was updated'; 8506REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8507SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 8508 FROM t0_template source_tab 8509WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8510 8511# check replace success: 1 8512DELETE FROM t1 8513WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 8514DELETE FROM t1 8515WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 8516f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 8517UPDATE t1 SET f_int2 = f_int1, 8518f_char1 = CAST(f_int1 AS CHAR), 8519f_char2 = CAST(f_int1 AS CHAR), 8520f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 8521WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 8522SET AUTOCOMMIT= 0; 8523INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8524SELECT f_int1, f_int1, '', '', 'was inserted' 8525FROM t0_template source_tab 8526WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8527 8528# check transactions-1 success: 1 8529COMMIT WORK; 8530 8531# check transactions-2 success: 1 8532ROLLBACK WORK; 8533 8534# check transactions-3 success: 1 8535DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8536COMMIT WORK; 8537ROLLBACK WORK; 8538 8539# check transactions-4 success: 1 8540INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8541SELECT f_int1, f_int1, '', '', 'was inserted' 8542FROM t0_template source_tab 8543WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8544 8545# check transactions-5 success: 1 8546ROLLBACK WORK; 8547 8548# check transactions-6 success: 1 8549# INFO: Storage engine used for t1 seems to be transactional. 8550COMMIT; 8551 8552# check transactions-7 success: 1 8553DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8554COMMIT WORK; 8555SET @@session.sql_mode = 'traditional'; 8556Warnings: 8557Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8558SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 8559INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8560SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 8561'', '', 'was inserted' FROM t0_template 8562WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 8563ERROR 22012: Division by 0 8564COMMIT; 8565 8566# check transactions-8 success: 1 8567# INFO: Storage engine used for t1 seems to be able to revert 8568# changes made by the failing statement. 8569SET @@session.sql_mode = ''; 8570Warnings: 8571Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 8572SET AUTOCOMMIT= 1; 8573DELETE FROM t1 WHERE f_charbig = 'was inserted'; 8574COMMIT WORK; 8575UPDATE t1 SET f_charbig = REPEAT('b', 1000); 8576 8577# check special-1 success: 1 8578UPDATE t1 SET f_charbig = ''; 8579 8580# check special-2 success: 1 8581UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 8582INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8583SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 8584WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8585INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8586SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8587'just inserted' FROM t0_template 8588WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8589CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 8590BEGIN 8591UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8592f_charbig = 'updated by trigger' 8593 WHERE f_int1 = new.f_int1; 8594END| 8595INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8596SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8597WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8598 8599# check trigger-1 success: 1 8600DROP TRIGGER trg_1; 8601UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8602f_int2 = CAST(f_char1 AS SIGNED INT), 8603f_charbig = 'just inserted' 8604 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8605DELETE FROM t0_aux 8606WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8607INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8608SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8609'just inserted' FROM t0_template 8610WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8611CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 8612BEGIN 8613UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8614f_charbig = 'updated by trigger' 8615 WHERE f_int1 = new.f_int1; 8616END| 8617INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8618SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 8619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8620 8621# check trigger-2 success: 1 8622DROP TRIGGER trg_1; 8623UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8624f_int2 = CAST(f_char1 AS SIGNED INT), 8625f_charbig = 'just inserted' 8626 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8627DELETE FROM t0_aux 8628WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8629INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8630SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8631'just inserted' FROM t0_template 8632WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8633CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8634BEGIN 8635UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8636f_charbig = 'updated by trigger' 8637 WHERE f_int1 = new.f_int1; 8638END| 8639UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8640WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8641 8642# check trigger-3 success: 1 8643DROP TRIGGER trg_1; 8644UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8645f_int2 = CAST(f_char1 AS SIGNED INT), 8646f_charbig = 'just inserted' 8647 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8648DELETE FROM t0_aux 8649WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8650INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8651SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8652'just inserted' FROM t0_template 8653WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8654CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 8655BEGIN 8656UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8657f_charbig = 'updated by trigger' 8658 WHERE f_int1 = - old.f_int1; 8659END| 8660UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8661WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8662 8663# check trigger-4 success: 1 8664DROP TRIGGER trg_1; 8665UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8666f_int2 = CAST(f_char1 AS SIGNED INT), 8667f_charbig = 'just inserted' 8668 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8669DELETE FROM t0_aux 8670WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8671INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8672SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8673'just inserted' FROM t0_template 8674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8675CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8676BEGIN 8677UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8678f_charbig = 'updated by trigger' 8679 WHERE f_int1 = new.f_int1; 8680END| 8681UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8682WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8683 8684# check trigger-5 success: 1 8685DROP TRIGGER trg_1; 8686UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8687f_int2 = CAST(f_char1 AS SIGNED INT), 8688f_charbig = 'just inserted' 8689 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8690DELETE FROM t0_aux 8691WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8692INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8693SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8694'just inserted' FROM t0_template 8695WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8696CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 8697BEGIN 8698UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8699f_charbig = 'updated by trigger' 8700 WHERE f_int1 = - old.f_int1; 8701END| 8702UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 8703WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8704 8705# check trigger-6 success: 1 8706DROP TRIGGER trg_1; 8707UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8708f_int2 = CAST(f_char1 AS SIGNED INT), 8709f_charbig = 'just inserted' 8710 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8711DELETE FROM t0_aux 8712WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8713INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8714SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8715'just inserted' FROM t0_template 8716WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8717CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 8718BEGIN 8719UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8720f_charbig = 'updated by trigger' 8721 WHERE f_int1 = - old.f_int1; 8722END| 8723DELETE FROM t0_aux 8724WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8725 8726# check trigger-7 success: 1 8727DROP TRIGGER trg_1; 8728UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8729f_int2 = CAST(f_char1 AS SIGNED INT), 8730f_charbig = 'just inserted' 8731 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8732DELETE FROM t0_aux 8733WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8734INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 8735SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 8736'just inserted' FROM t0_template 8737WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8738CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 8739BEGIN 8740UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 8741f_charbig = 'updated by trigger' 8742 WHERE f_int1 = - old.f_int1; 8743END| 8744DELETE FROM t0_aux 8745WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 8746 8747# check trigger-8 success: 1 8748DROP TRIGGER trg_1; 8749UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8750f_int2 = CAST(f_char1 AS SIGNED INT), 8751f_charbig = 'just inserted' 8752 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 8753DELETE FROM t0_aux 8754WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8755DELETE FROM t1 8756WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 8757CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8758BEGIN 8759SET new.f_int1 = old.f_int1 + @max_row, 8760new.f_int2 = old.f_int2 - @max_row, 8761new.f_charbig = '####updated per update trigger####'; 8762END| 8763UPDATE t1 8764SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8765f_charbig = '####updated per update statement itself####'; 8766 8767# check trigger-9 success: 1 8768DROP TRIGGER trg_2; 8769UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8770f_int2 = CAST(f_char1 AS SIGNED INT), 8771f_charbig = CONCAT('===',f_char1,'==='); 8772CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 8773BEGIN 8774SET new.f_int1 = new.f_int1 + @max_row, 8775new.f_int2 = new.f_int2 - @max_row, 8776new.f_charbig = '####updated per update trigger####'; 8777END| 8778UPDATE t1 8779SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 8780f_charbig = '####updated per update statement itself####'; 8781 8782# check trigger-10 success: 1 8783DROP TRIGGER trg_2; 8784UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 8785f_int2 = CAST(f_char1 AS SIGNED INT), 8786f_charbig = CONCAT('===',f_char1,'==='); 8787CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8788BEGIN 8789SET new.f_int1 = @my_max1 + @counter, 8790new.f_int2 = @my_min2 - @counter, 8791new.f_charbig = '####updated per insert trigger####'; 8792SET @counter = @counter + 1; 8793END| 8794SET @counter = 1; 8795SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8796INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8797SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8798CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8799WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8800ORDER BY f_int1; 8801DROP TRIGGER trg_3; 8802 8803# check trigger-11 success: 1 8804DELETE FROM t1 8805WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8806AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8807AND f_charbig = '####updated per insert trigger####'; 8808CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 8809BEGIN 8810SET new.f_int1 = @my_max1 + @counter, 8811new.f_int2 = @my_min2 - @counter, 8812new.f_charbig = '####updated per insert trigger####'; 8813SET @counter = @counter + 1; 8814END| 8815SET @counter = 1; 8816SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 8817INSERT INTO t1 (f_char1, f_char2, f_charbig) 8818SELECT CAST(f_int1 AS CHAR), 8819CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 8820WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 8821ORDER BY f_int1; 8822DROP TRIGGER trg_3; 8823 8824# check trigger-12 success: 1 8825DELETE FROM t1 8826WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 8827AND f_int2 <> CAST(f_char1 AS SIGNED INT) 8828AND f_charbig = '####updated per insert trigger####'; 8829ANALYZE TABLE t1; 8830Table Op Msg_type Msg_text 8831test.t1 analyze status OK 8832CHECK TABLE t1 EXTENDED; 8833Table Op Msg_type Msg_text 8834test.t1 check status OK 8835CHECKSUM TABLE t1 EXTENDED; 8836Table Checksum 8837test.t1 <some_value> 8838OPTIMIZE TABLE t1; 8839Table Op Msg_type Msg_text 8840test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 8841test.t1 optimize status OK 8842# check layout success: 1 8843REPAIR TABLE t1 EXTENDED; 8844Table Op Msg_type Msg_text 8845test.t1 repair status OK 8846# check layout success: 1 8847TRUNCATE t1; 8848 8849# check TRUNCATE success: 1 8850# check layout success: 1 8851# End usability test (inc/partition_check.inc) 8852DROP TABLE t1; 8853CREATE TABLE t1 ( 8854f_int1 INTEGER, 8855f_int2 INTEGER, 8856f_char1 CHAR(20), 8857f_char2 CHAR(20), 8858f_charbig VARCHAR(1000) 8859, PRIMARY KEY (f_int2,f_int1) 8860) 8861PARTITION BY LIST(MOD(f_int1,4)) 8862(PARTITION part_3 VALUES IN (-3), 8863PARTITION part_2 VALUES IN (-2), 8864PARTITION part_1 VALUES IN (-1), 8865PARTITION part_N VALUES IN (NULL), 8866PARTITION part0 VALUES IN (0), 8867PARTITION part1 VALUES IN (1), 8868PARTITION part2 VALUES IN (2), 8869PARTITION part3 VALUES IN (3)); 8870INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8871SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8872WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 8873ALTER TABLE t1 MODIFY f_int2 BIGINT; 8874INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 8875SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 8876WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 8877# Start usability test (inc/partition_check.inc) 8878create_command 8879SHOW CREATE TABLE t1; 8880Table Create Table 8881t1 CREATE TABLE `t1` ( 8882 `f_int1` int(11) NOT NULL, 8883 `f_int2` bigint(20) NOT NULL, 8884 `f_char1` char(20) DEFAULT NULL, 8885 `f_char2` char(20) DEFAULT NULL, 8886 `f_charbig` varchar(1000) DEFAULT NULL, 8887 PRIMARY KEY (`f_int2`,`f_int1`) 8888) ENGINE=TokuDB DEFAULT CHARSET=latin1 8889/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 8890(PARTITION part_3 VALUES IN (-3) ENGINE = TokuDB, 8891 PARTITION part_2 VALUES IN (-2) ENGINE = TokuDB, 8892 PARTITION part_1 VALUES IN (-1) ENGINE = TokuDB, 8893 PARTITION part_N VALUES IN (NULL) ENGINE = TokuDB, 8894 PARTITION part0 VALUES IN (0) ENGINE = TokuDB, 8895 PARTITION part1 VALUES IN (1) ENGINE = TokuDB, 8896 PARTITION part2 VALUES IN (2) ENGINE = TokuDB, 8897 PARTITION part3 VALUES IN (3) ENGINE = TokuDB) */ 8898 8899# check prerequisites-1 success: 1 8900# check COUNT(*) success: 1 8901# check MIN/MAX(f_int1) success: 1 8902# check MIN/MAX(f_int2) success: 1 8903INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8904SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 8905CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 8906WHERE f_int1 IN (2,3); 8907ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 8908# check prerequisites-3 success: 1 8909# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 8910INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8911SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8912CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8913WHERE f_int1 IN (2,3); 8914DELETE FROM t1 WHERE f_charbig = 'delete me'; 8915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 8916SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 8917CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 8918WHERE f_int1 IN (2,3); 8919DELETE FROM t1 WHERE f_charbig = 'delete me'; 8920# check read via f_int1 success: 1 8921# check read via f_int2 success: 1 8922 8923# check multiple-1 success: 1 8924DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 8925 8926# check multiple-2 success: 1 8927INSERT INTO t1 SELECT * FROM t0_template 8928WHERE MOD(f_int1,3) = 0; 8929 8930# check multiple-3 success: 1 8931UPDATE t1 SET f_int1 = f_int1 + @max_row 8932WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 8933AND @max_row_div2 + @max_row_div4; 8934 8935# check multiple-4 success: 1 8936DELETE FROM t1 8937WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 8938AND @max_row_div2 + @max_row_div4 + @max_row; 8939 8940# check multiple-5 success: 1 8941SELECT COUNT(*) INTO @try_count FROM t0_template 8942WHERE MOD(f_int1,3) = 0 8943AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8944SELECT COUNT(*) INTO @clash_count 8945FROM t1 INNER JOIN t0_template USING(f_int1) 8946WHERE MOD(f_int1,3) = 0 8947AND f_int1 BETWEEN @max_row_div2 AND @max_row; 8948SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 8949INSERT INTO t1 8950SET f_int1 = @cur_value , f_int2 = @cur_value, 8951f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8952f_charbig = '#SINGLE#'; 8953 8954# check single-1 success: 1 8955SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 8956INSERT INTO t1 8957SET f_int1 = @cur_value , f_int2 = @cur_value, 8958f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 8959f_charbig = '#SINGLE#'; 8960 8961# check single-2 success: 1 8962SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 8963SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 8964UPDATE t1 SET f_int1 = @cur_value2 8965WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 8966 8967# check single-3 success: 1 8968SET @cur_value1= -1; 8969SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 8970UPDATE t1 SET f_int1 = @cur_value1 8971WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 8972 8973# check single-4 success: 1 8974SELECT MAX(f_int1) INTO @cur_value FROM t1; 8975DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 8976 8977# check single-5 success: 1 8978DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 8979 8980# check single-6 success: 1 8981INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 8982 8983# check single-7 success: 1 8984DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 8985DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 8986INSERT t1 SET f_int1 = 0 , f_int2 = 0, 8987f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 8988f_charbig = '#NULL#'; 8989INSERT INTO t1 8990SET f_int1 = NULL , f_int2 = -@max_row, 8991f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 8992f_charbig = '#NULL#'; 8993ERROR 23000: Column 'f_int1' cannot be null 8994# check null success: 1 8995DELETE FROM t1 8996WHERE f_int1 = 0 AND f_int2 = 0 8997AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 8998AND f_charbig = '#NULL#'; 8999INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9000SELECT f_int1, f_int1, '', '', 'was inserted' 9001 FROM t0_template source_tab 9002WHERE MOD(f_int1,3) = 0 9003AND f_int1 BETWEEN @max_row_div2 AND @max_row 9004ON DUPLICATE KEY 9005UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9006f_int2 = 2 * @max_row + source_tab.f_int1, 9007f_charbig = 'was updated'; 9008 9009# check unique-1-a success: 1 9010 9011# check unique-1-b success: 1 9012DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9013UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9014f_int2 = CAST(f_char1 AS SIGNED INT), 9015f_charbig = CONCAT('===',f_char1,'===') 9016WHERE f_charbig = 'was updated'; 9017REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9018SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9019 FROM t0_template source_tab 9020WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9021 9022# check replace success: 1 9023DELETE FROM t1 9024WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9025DELETE FROM t1 9026WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9027f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9028UPDATE t1 SET f_int2 = f_int1, 9029f_char1 = CAST(f_int1 AS CHAR), 9030f_char2 = CAST(f_int1 AS CHAR), 9031f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9032WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9033SET AUTOCOMMIT= 0; 9034INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9035SELECT f_int1, f_int1, '', '', 'was inserted' 9036FROM t0_template source_tab 9037WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9038 9039# check transactions-1 success: 1 9040COMMIT WORK; 9041 9042# check transactions-2 success: 1 9043ROLLBACK WORK; 9044 9045# check transactions-3 success: 1 9046DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9047COMMIT WORK; 9048ROLLBACK WORK; 9049 9050# check transactions-4 success: 1 9051INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9052SELECT f_int1, f_int1, '', '', 'was inserted' 9053FROM t0_template source_tab 9054WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9055 9056# check transactions-5 success: 1 9057ROLLBACK WORK; 9058 9059# check transactions-6 success: 1 9060# INFO: Storage engine used for t1 seems to be transactional. 9061COMMIT; 9062 9063# check transactions-7 success: 1 9064DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9065COMMIT WORK; 9066SET @@session.sql_mode = 'traditional'; 9067Warnings: 9068Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9069SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9070INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9071SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9072'', '', 'was inserted' FROM t0_template 9073WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9074ERROR 22012: Division by 0 9075COMMIT; 9076 9077# check transactions-8 success: 1 9078# INFO: Storage engine used for t1 seems to be able to revert 9079# changes made by the failing statement. 9080SET @@session.sql_mode = ''; 9081Warnings: 9082Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9083SET AUTOCOMMIT= 1; 9084DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9085COMMIT WORK; 9086UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9087 9088# check special-1 success: 1 9089UPDATE t1 SET f_charbig = ''; 9090 9091# check special-2 success: 1 9092UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9093INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9094SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9095WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9096INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9097SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9098'just inserted' FROM t0_template 9099WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9100CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9101BEGIN 9102UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9103f_charbig = 'updated by trigger' 9104 WHERE f_int1 = new.f_int1; 9105END| 9106INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9107SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9108WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9109 9110# check trigger-1 success: 1 9111DROP TRIGGER trg_1; 9112UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9113f_int2 = CAST(f_char1 AS SIGNED INT), 9114f_charbig = 'just inserted' 9115 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9116DELETE FROM t0_aux 9117WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9118INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9119SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9120'just inserted' FROM t0_template 9121WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9122CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9123BEGIN 9124UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9125f_charbig = 'updated by trigger' 9126 WHERE f_int1 = new.f_int1; 9127END| 9128INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9129SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9130WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9131 9132# check trigger-2 success: 1 9133DROP TRIGGER trg_1; 9134UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9135f_int2 = CAST(f_char1 AS SIGNED INT), 9136f_charbig = 'just inserted' 9137 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9138DELETE FROM t0_aux 9139WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9140INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9141SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9142'just inserted' FROM t0_template 9143WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9144CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9145BEGIN 9146UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9147f_charbig = 'updated by trigger' 9148 WHERE f_int1 = new.f_int1; 9149END| 9150UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9151WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9152 9153# check trigger-3 success: 1 9154DROP TRIGGER trg_1; 9155UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9156f_int2 = CAST(f_char1 AS SIGNED INT), 9157f_charbig = 'just inserted' 9158 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9159DELETE FROM t0_aux 9160WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9161INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9162SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9163'just inserted' FROM t0_template 9164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9165CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9166BEGIN 9167UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9168f_charbig = 'updated by trigger' 9169 WHERE f_int1 = - old.f_int1; 9170END| 9171UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9172WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9173 9174# check trigger-4 success: 1 9175DROP TRIGGER trg_1; 9176UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9177f_int2 = CAST(f_char1 AS SIGNED INT), 9178f_charbig = 'just inserted' 9179 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9180DELETE FROM t0_aux 9181WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9182INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9183SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9184'just inserted' FROM t0_template 9185WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9186CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9187BEGIN 9188UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9189f_charbig = 'updated by trigger' 9190 WHERE f_int1 = new.f_int1; 9191END| 9192UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9193WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9194 9195# check trigger-5 success: 1 9196DROP TRIGGER trg_1; 9197UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9198f_int2 = CAST(f_char1 AS SIGNED INT), 9199f_charbig = 'just inserted' 9200 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9201DELETE FROM t0_aux 9202WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9204SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9205'just inserted' FROM t0_template 9206WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9207CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9208BEGIN 9209UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9210f_charbig = 'updated by trigger' 9211 WHERE f_int1 = - old.f_int1; 9212END| 9213UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9214WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9215 9216# check trigger-6 success: 1 9217DROP TRIGGER trg_1; 9218UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9219f_int2 = CAST(f_char1 AS SIGNED INT), 9220f_charbig = 'just inserted' 9221 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9222DELETE FROM t0_aux 9223WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9224INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9225SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9226'just inserted' FROM t0_template 9227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9228CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9229BEGIN 9230UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9231f_charbig = 'updated by trigger' 9232 WHERE f_int1 = - old.f_int1; 9233END| 9234DELETE FROM t0_aux 9235WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9236 9237# check trigger-7 success: 1 9238DROP TRIGGER trg_1; 9239UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9240f_int2 = CAST(f_char1 AS SIGNED INT), 9241f_charbig = 'just inserted' 9242 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9243DELETE FROM t0_aux 9244WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9245INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9246SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9247'just inserted' FROM t0_template 9248WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9249CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9250BEGIN 9251UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9252f_charbig = 'updated by trigger' 9253 WHERE f_int1 = - old.f_int1; 9254END| 9255DELETE FROM t0_aux 9256WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9257 9258# check trigger-8 success: 1 9259DROP TRIGGER trg_1; 9260UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9261f_int2 = CAST(f_char1 AS SIGNED INT), 9262f_charbig = 'just inserted' 9263 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9264DELETE FROM t0_aux 9265WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9266DELETE FROM t1 9267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9268CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9269BEGIN 9270SET new.f_int1 = old.f_int1 + @max_row, 9271new.f_int2 = old.f_int2 - @max_row, 9272new.f_charbig = '####updated per update trigger####'; 9273END| 9274UPDATE t1 9275SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9276f_charbig = '####updated per update statement itself####'; 9277 9278# check trigger-9 success: 1 9279DROP TRIGGER trg_2; 9280UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9281f_int2 = CAST(f_char1 AS SIGNED INT), 9282f_charbig = CONCAT('===',f_char1,'==='); 9283CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9284BEGIN 9285SET new.f_int1 = new.f_int1 + @max_row, 9286new.f_int2 = new.f_int2 - @max_row, 9287new.f_charbig = '####updated per update trigger####'; 9288END| 9289UPDATE t1 9290SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9291f_charbig = '####updated per update statement itself####'; 9292 9293# check trigger-10 success: 1 9294DROP TRIGGER trg_2; 9295UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9296f_int2 = CAST(f_char1 AS SIGNED INT), 9297f_charbig = CONCAT('===',f_char1,'==='); 9298CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9299BEGIN 9300SET new.f_int1 = @my_max1 + @counter, 9301new.f_int2 = @my_min2 - @counter, 9302new.f_charbig = '####updated per insert trigger####'; 9303SET @counter = @counter + 1; 9304END| 9305SET @counter = 1; 9306SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9308SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9309CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9310WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9311ORDER BY f_int1; 9312DROP TRIGGER trg_3; 9313 9314# check trigger-11 success: 1 9315DELETE FROM t1 9316WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9317AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9318AND f_charbig = '####updated per insert trigger####'; 9319CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9320BEGIN 9321SET new.f_int1 = @my_max1 + @counter, 9322new.f_int2 = @my_min2 - @counter, 9323new.f_charbig = '####updated per insert trigger####'; 9324SET @counter = @counter + 1; 9325END| 9326SET @counter = 1; 9327SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9328INSERT INTO t1 (f_char1, f_char2, f_charbig) 9329SELECT CAST(f_int1 AS CHAR), 9330CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9331WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9332ORDER BY f_int1; 9333DROP TRIGGER trg_3; 9334 9335# check trigger-12 success: 1 9336DELETE FROM t1 9337WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9338AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9339AND f_charbig = '####updated per insert trigger####'; 9340ANALYZE TABLE t1; 9341Table Op Msg_type Msg_text 9342test.t1 analyze status OK 9343CHECK TABLE t1 EXTENDED; 9344Table Op Msg_type Msg_text 9345test.t1 check status OK 9346CHECKSUM TABLE t1 EXTENDED; 9347Table Checksum 9348test.t1 <some_value> 9349OPTIMIZE TABLE t1; 9350Table Op Msg_type Msg_text 9351test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 9352test.t1 optimize status OK 9353# check layout success: 1 9354REPAIR TABLE t1 EXTENDED; 9355Table Op Msg_type Msg_text 9356test.t1 repair status OK 9357# check layout success: 1 9358TRUNCATE t1; 9359 9360# check TRUNCATE success: 1 9361# check layout success: 1 9362# End usability test (inc/partition_check.inc) 9363DROP TABLE t1; 9364CREATE TABLE t1 ( 9365f_int1 INTEGER, 9366f_int2 INTEGER, 9367f_char1 CHAR(20), 9368f_char2 CHAR(20), 9369f_charbig VARCHAR(1000) 9370, PRIMARY KEY (f_int2,f_int1) 9371) 9372PARTITION BY RANGE(f_int1) 9373(PARTITION parta VALUES LESS THAN (0), 9374PARTITION partb VALUES LESS THAN (5), 9375PARTITION partc VALUES LESS THAN (10), 9376PARTITION partd VALUES LESS THAN (10 + 5), 9377PARTITION parte VALUES LESS THAN (20), 9378PARTITION partf VALUES LESS THAN (2147483646)); 9379INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9380SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9381WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 9382ALTER TABLE t1 MODIFY f_int2 BIGINT; 9383INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9384SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9385WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 9386# Start usability test (inc/partition_check.inc) 9387create_command 9388SHOW CREATE TABLE t1; 9389Table Create Table 9390t1 CREATE TABLE `t1` ( 9391 `f_int1` int(11) NOT NULL, 9392 `f_int2` bigint(20) NOT NULL, 9393 `f_char1` char(20) DEFAULT NULL, 9394 `f_char2` char(20) DEFAULT NULL, 9395 `f_charbig` varchar(1000) DEFAULT NULL, 9396 PRIMARY KEY (`f_int2`,`f_int1`) 9397) ENGINE=TokuDB DEFAULT CHARSET=latin1 9398/*!50100 PARTITION BY RANGE (f_int1) 9399(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 9400 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 9401 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 9402 PARTITION partd VALUES LESS THAN (15) ENGINE = TokuDB, 9403 PARTITION parte VALUES LESS THAN (20) ENGINE = TokuDB, 9404 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 9405 9406# check prerequisites-1 success: 1 9407# check COUNT(*) success: 1 9408# check MIN/MAX(f_int1) success: 1 9409# check MIN/MAX(f_int2) success: 1 9410INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9411SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9412CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9413WHERE f_int1 IN (2,3); 9414ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 9415# check prerequisites-3 success: 1 9416# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9417INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9418SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9419CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9420WHERE f_int1 IN (2,3); 9421DELETE FROM t1 WHERE f_charbig = 'delete me'; 9422INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9423SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9424CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9425WHERE f_int1 IN (2,3); 9426DELETE FROM t1 WHERE f_charbig = 'delete me'; 9427# check read via f_int1 success: 1 9428# check read via f_int2 success: 1 9429 9430# check multiple-1 success: 1 9431DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9432 9433# check multiple-2 success: 1 9434INSERT INTO t1 SELECT * FROM t0_template 9435WHERE MOD(f_int1,3) = 0; 9436 9437# check multiple-3 success: 1 9438UPDATE t1 SET f_int1 = f_int1 + @max_row 9439WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9440AND @max_row_div2 + @max_row_div4; 9441 9442# check multiple-4 success: 1 9443DELETE FROM t1 9444WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9445AND @max_row_div2 + @max_row_div4 + @max_row; 9446 9447# check multiple-5 success: 1 9448SELECT COUNT(*) INTO @try_count FROM t0_template 9449WHERE MOD(f_int1,3) = 0 9450AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9451SELECT COUNT(*) INTO @clash_count 9452FROM t1 INNER JOIN t0_template USING(f_int1) 9453WHERE MOD(f_int1,3) = 0 9454AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9455SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9456INSERT INTO t1 9457SET f_int1 = @cur_value , f_int2 = @cur_value, 9458f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9459f_charbig = '#SINGLE#'; 9460 9461# check single-1 success: 1 9462SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9463INSERT INTO t1 9464SET f_int1 = @cur_value , f_int2 = @cur_value, 9465f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9466f_charbig = '#SINGLE#'; 9467 9468# check single-2 success: 1 9469SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9470SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9471UPDATE t1 SET f_int1 = @cur_value2 9472WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9473 9474# check single-3 success: 1 9475SET @cur_value1= -1; 9476SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9477UPDATE t1 SET f_int1 = @cur_value1 9478WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9479 9480# check single-4 success: 1 9481SELECT MAX(f_int1) INTO @cur_value FROM t1; 9482DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9483 9484# check single-5 success: 1 9485DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9486 9487# check single-6 success: 1 9488INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9489ERROR HY000: Table has no partition for value 2147483647 9490DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9491INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9492f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9493f_charbig = '#NULL#'; 9494INSERT INTO t1 9495SET f_int1 = NULL , f_int2 = -@max_row, 9496f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 9497f_charbig = '#NULL#'; 9498ERROR 23000: Column 'f_int1' cannot be null 9499# check null success: 1 9500DELETE FROM t1 9501WHERE f_int1 = 0 AND f_int2 = 0 9502AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 9503AND f_charbig = '#NULL#'; 9504INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9505SELECT f_int1, f_int1, '', '', 'was inserted' 9506 FROM t0_template source_tab 9507WHERE MOD(f_int1,3) = 0 9508AND f_int1 BETWEEN @max_row_div2 AND @max_row 9509ON DUPLICATE KEY 9510UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 9511f_int2 = 2 * @max_row + source_tab.f_int1, 9512f_charbig = 'was updated'; 9513 9514# check unique-1-a success: 1 9515 9516# check unique-1-b success: 1 9517DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9518UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9519f_int2 = CAST(f_char1 AS SIGNED INT), 9520f_charbig = CONCAT('===',f_char1,'===') 9521WHERE f_charbig = 'was updated'; 9522REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9523SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 9524 FROM t0_template source_tab 9525WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9526 9527# check replace success: 1 9528DELETE FROM t1 9529WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 9530DELETE FROM t1 9531WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 9532f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 9533UPDATE t1 SET f_int2 = f_int1, 9534f_char1 = CAST(f_int1 AS CHAR), 9535f_char2 = CAST(f_int1 AS CHAR), 9536f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 9537WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 9538SET AUTOCOMMIT= 0; 9539INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9540SELECT f_int1, f_int1, '', '', 'was inserted' 9541FROM t0_template source_tab 9542WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9543 9544# check transactions-1 success: 1 9545COMMIT WORK; 9546 9547# check transactions-2 success: 1 9548ROLLBACK WORK; 9549 9550# check transactions-3 success: 1 9551DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9552COMMIT WORK; 9553ROLLBACK WORK; 9554 9555# check transactions-4 success: 1 9556INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9557SELECT f_int1, f_int1, '', '', 'was inserted' 9558FROM t0_template source_tab 9559WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9560 9561# check transactions-5 success: 1 9562ROLLBACK WORK; 9563 9564# check transactions-6 success: 1 9565# INFO: Storage engine used for t1 seems to be transactional. 9566COMMIT; 9567 9568# check transactions-7 success: 1 9569DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9570COMMIT WORK; 9571SET @@session.sql_mode = 'traditional'; 9572Warnings: 9573Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9574SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 9575INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9576SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 9577'', '', 'was inserted' FROM t0_template 9578WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 9579ERROR 22012: Division by 0 9580COMMIT; 9581 9582# check transactions-8 success: 1 9583# INFO: Storage engine used for t1 seems to be able to revert 9584# changes made by the failing statement. 9585SET @@session.sql_mode = ''; 9586Warnings: 9587Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 9588SET AUTOCOMMIT= 1; 9589DELETE FROM t1 WHERE f_charbig = 'was inserted'; 9590COMMIT WORK; 9591UPDATE t1 SET f_charbig = REPEAT('b', 1000); 9592 9593# check special-1 success: 1 9594UPDATE t1 SET f_charbig = ''; 9595 9596# check special-2 success: 1 9597UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 9598INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9599SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 9600WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9601INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9602SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9603'just inserted' FROM t0_template 9604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9605CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 9606BEGIN 9607UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9608f_charbig = 'updated by trigger' 9609 WHERE f_int1 = new.f_int1; 9610END| 9611INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9612SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9613WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9614 9615# check trigger-1 success: 1 9616DROP TRIGGER trg_1; 9617UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9618f_int2 = CAST(f_char1 AS SIGNED INT), 9619f_charbig = 'just inserted' 9620 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9621DELETE FROM t0_aux 9622WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9623INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9624SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9625'just inserted' FROM t0_template 9626WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9627CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 9628BEGIN 9629UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9630f_charbig = 'updated by trigger' 9631 WHERE f_int1 = new.f_int1; 9632END| 9633INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9634SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 9635WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9636 9637# check trigger-2 success: 1 9638DROP TRIGGER trg_1; 9639UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9640f_int2 = CAST(f_char1 AS SIGNED INT), 9641f_charbig = 'just inserted' 9642 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9643DELETE FROM t0_aux 9644WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9645INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9646SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9647'just inserted' FROM t0_template 9648WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9649CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9650BEGIN 9651UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9652f_charbig = 'updated by trigger' 9653 WHERE f_int1 = new.f_int1; 9654END| 9655UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9656WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9657 9658# check trigger-3 success: 1 9659DROP TRIGGER trg_1; 9660UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9661f_int2 = CAST(f_char1 AS SIGNED INT), 9662f_charbig = 'just inserted' 9663 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9664DELETE FROM t0_aux 9665WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9666INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9667SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9668'just inserted' FROM t0_template 9669WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9670CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 9671BEGIN 9672UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9673f_charbig = 'updated by trigger' 9674 WHERE f_int1 = - old.f_int1; 9675END| 9676UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9677WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9678 9679# check trigger-4 success: 1 9680DROP TRIGGER trg_1; 9681UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9682f_int2 = CAST(f_char1 AS SIGNED INT), 9683f_charbig = 'just inserted' 9684 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9685DELETE FROM t0_aux 9686WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9687INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9688SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9689'just inserted' FROM t0_template 9690WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9691CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9692BEGIN 9693UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9694f_charbig = 'updated by trigger' 9695 WHERE f_int1 = new.f_int1; 9696END| 9697UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9698WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9699 9700# check trigger-5 success: 1 9701DROP TRIGGER trg_1; 9702UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9703f_int2 = CAST(f_char1 AS SIGNED INT), 9704f_charbig = 'just inserted' 9705 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9706DELETE FROM t0_aux 9707WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9708INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9709SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9710'just inserted' FROM t0_template 9711WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9712CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 9713BEGIN 9714UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9715f_charbig = 'updated by trigger' 9716 WHERE f_int1 = - old.f_int1; 9717END| 9718UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 9719WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9720 9721# check trigger-6 success: 1 9722DROP TRIGGER trg_1; 9723UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9724f_int2 = CAST(f_char1 AS SIGNED INT), 9725f_charbig = 'just inserted' 9726 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9727DELETE FROM t0_aux 9728WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9729INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9730SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9731'just inserted' FROM t0_template 9732WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9733CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 9734BEGIN 9735UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9736f_charbig = 'updated by trigger' 9737 WHERE f_int1 = - old.f_int1; 9738END| 9739DELETE FROM t0_aux 9740WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9741 9742# check trigger-7 success: 1 9743DROP TRIGGER trg_1; 9744UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9745f_int2 = CAST(f_char1 AS SIGNED INT), 9746f_charbig = 'just inserted' 9747 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9748DELETE FROM t0_aux 9749WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9750INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 9751SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 9752'just inserted' FROM t0_template 9753WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9754CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 9755BEGIN 9756UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 9757f_charbig = 'updated by trigger' 9758 WHERE f_int1 = - old.f_int1; 9759END| 9760DELETE FROM t0_aux 9761WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 9762 9763# check trigger-8 success: 1 9764DROP TRIGGER trg_1; 9765UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9766f_int2 = CAST(f_char1 AS SIGNED INT), 9767f_charbig = 'just inserted' 9768 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 9769DELETE FROM t0_aux 9770WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9771DELETE FROM t1 9772WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 9773CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9774BEGIN 9775SET new.f_int1 = old.f_int1 + @max_row, 9776new.f_int2 = old.f_int2 - @max_row, 9777new.f_charbig = '####updated per update trigger####'; 9778END| 9779UPDATE t1 9780SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9781f_charbig = '####updated per update statement itself####'; 9782 9783# check trigger-9 success: 1 9784DROP TRIGGER trg_2; 9785UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9786f_int2 = CAST(f_char1 AS SIGNED INT), 9787f_charbig = CONCAT('===',f_char1,'==='); 9788CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 9789BEGIN 9790SET new.f_int1 = new.f_int1 + @max_row, 9791new.f_int2 = new.f_int2 - @max_row, 9792new.f_charbig = '####updated per update trigger####'; 9793END| 9794UPDATE t1 9795SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 9796f_charbig = '####updated per update statement itself####'; 9797 9798# check trigger-10 success: 1 9799DROP TRIGGER trg_2; 9800UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 9801f_int2 = CAST(f_char1 AS SIGNED INT), 9802f_charbig = CONCAT('===',f_char1,'==='); 9803CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9804BEGIN 9805SET new.f_int1 = @my_max1 + @counter, 9806new.f_int2 = @my_min2 - @counter, 9807new.f_charbig = '####updated per insert trigger####'; 9808SET @counter = @counter + 1; 9809END| 9810SET @counter = 1; 9811SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9812INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9813SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9814CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9815WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9816ORDER BY f_int1; 9817DROP TRIGGER trg_3; 9818 9819# check trigger-11 success: 1 9820DELETE FROM t1 9821WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9822AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9823AND f_charbig = '####updated per insert trigger####'; 9824CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 9825BEGIN 9826SET new.f_int1 = @my_max1 + @counter, 9827new.f_int2 = @my_min2 - @counter, 9828new.f_charbig = '####updated per insert trigger####'; 9829SET @counter = @counter + 1; 9830END| 9831SET @counter = 1; 9832SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 9833INSERT INTO t1 (f_char1, f_char2, f_charbig) 9834SELECT CAST(f_int1 AS CHAR), 9835CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 9836WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 9837ORDER BY f_int1; 9838DROP TRIGGER trg_3; 9839 9840# check trigger-12 success: 1 9841DELETE FROM t1 9842WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 9843AND f_int2 <> CAST(f_char1 AS SIGNED INT) 9844AND f_charbig = '####updated per insert trigger####'; 9845ANALYZE TABLE t1; 9846Table Op Msg_type Msg_text 9847test.t1 analyze status OK 9848CHECK TABLE t1 EXTENDED; 9849Table Op Msg_type Msg_text 9850test.t1 check status OK 9851CHECKSUM TABLE t1 EXTENDED; 9852Table Checksum 9853test.t1 <some_value> 9854OPTIMIZE TABLE t1; 9855Table Op Msg_type Msg_text 9856test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 9857test.t1 optimize status OK 9858# check layout success: 1 9859REPAIR TABLE t1 EXTENDED; 9860Table Op Msg_type Msg_text 9861test.t1 repair status OK 9862# check layout success: 1 9863TRUNCATE t1; 9864 9865# check TRUNCATE success: 1 9866# check layout success: 1 9867# End usability test (inc/partition_check.inc) 9868DROP TABLE t1; 9869CREATE TABLE t1 ( 9870f_int1 INTEGER, 9871f_int2 INTEGER, 9872f_char1 CHAR(20), 9873f_char2 CHAR(20), 9874f_charbig VARCHAR(1000) 9875, PRIMARY KEY (f_int2,f_int1) 9876) 9877PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 9878(PARTITION parta VALUES LESS THAN (0), 9879PARTITION partb VALUES LESS THAN (5), 9880PARTITION partc VALUES LESS THAN (10), 9881PARTITION partd VALUES LESS THAN (2147483646)); 9882INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9883SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9884WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 9885ALTER TABLE t1 MODIFY f_int2 BIGINT; 9886INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 9887SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 9888WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 9889# Start usability test (inc/partition_check.inc) 9890create_command 9891SHOW CREATE TABLE t1; 9892Table Create Table 9893t1 CREATE TABLE `t1` ( 9894 `f_int1` int(11) NOT NULL, 9895 `f_int2` bigint(20) NOT NULL, 9896 `f_char1` char(20) DEFAULT NULL, 9897 `f_char2` char(20) DEFAULT NULL, 9898 `f_charbig` varchar(1000) DEFAULT NULL, 9899 PRIMARY KEY (`f_int2`,`f_int1`) 9900) ENGINE=TokuDB DEFAULT CHARSET=latin1 9901/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 9902SUBPARTITION BY HASH (f_int1) 9903SUBPARTITIONS 2 9904(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 9905 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 9906 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 9907 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 9908 9909# check prerequisites-1 success: 1 9910# check COUNT(*) success: 1 9911# check MIN/MAX(f_int1) success: 1 9912# check MIN/MAX(f_int2) success: 1 9913INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9914SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 9915CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 9916WHERE f_int1 IN (2,3); 9917ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 9918# check prerequisites-3 success: 1 9919# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 9920INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9921SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9922CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9923WHERE f_int1 IN (2,3); 9924DELETE FROM t1 WHERE f_charbig = 'delete me'; 9925INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 9926SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 9927CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 9928WHERE f_int1 IN (2,3); 9929DELETE FROM t1 WHERE f_charbig = 'delete me'; 9930# check read via f_int1 success: 1 9931# check read via f_int2 success: 1 9932 9933# check multiple-1 success: 1 9934DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 9935 9936# check multiple-2 success: 1 9937INSERT INTO t1 SELECT * FROM t0_template 9938WHERE MOD(f_int1,3) = 0; 9939 9940# check multiple-3 success: 1 9941UPDATE t1 SET f_int1 = f_int1 + @max_row 9942WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 9943AND @max_row_div2 + @max_row_div4; 9944 9945# check multiple-4 success: 1 9946DELETE FROM t1 9947WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 9948AND @max_row_div2 + @max_row_div4 + @max_row; 9949 9950# check multiple-5 success: 1 9951SELECT COUNT(*) INTO @try_count FROM t0_template 9952WHERE MOD(f_int1,3) = 0 9953AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9954SELECT COUNT(*) INTO @clash_count 9955FROM t1 INNER JOIN t0_template USING(f_int1) 9956WHERE MOD(f_int1,3) = 0 9957AND f_int1 BETWEEN @max_row_div2 AND @max_row; 9958SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 9959INSERT INTO t1 9960SET f_int1 = @cur_value , f_int2 = @cur_value, 9961f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9962f_charbig = '#SINGLE#'; 9963 9964# check single-1 success: 1 9965SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 9966INSERT INTO t1 9967SET f_int1 = @cur_value , f_int2 = @cur_value, 9968f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 9969f_charbig = '#SINGLE#'; 9970 9971# check single-2 success: 1 9972SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 9973SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 9974UPDATE t1 SET f_int1 = @cur_value2 9975WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 9976 9977# check single-3 success: 1 9978SET @cur_value1= -1; 9979SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 9980UPDATE t1 SET f_int1 = @cur_value1 9981WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 9982 9983# check single-4 success: 1 9984SELECT MAX(f_int1) INTO @cur_value FROM t1; 9985DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 9986 9987# check single-5 success: 1 9988DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 9989 9990# check single-6 success: 1 9991INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 9992 9993# check single-7 success: 1 9994DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 9995DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 9996INSERT t1 SET f_int1 = 0 , f_int2 = 0, 9997f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 9998f_charbig = '#NULL#'; 9999INSERT INTO t1 10000SET f_int1 = NULL , f_int2 = -@max_row, 10001f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10002f_charbig = '#NULL#'; 10003ERROR 23000: Column 'f_int1' cannot be null 10004# check null success: 1 10005DELETE FROM t1 10006WHERE f_int1 = 0 AND f_int2 = 0 10007AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10008AND f_charbig = '#NULL#'; 10009INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10010SELECT f_int1, f_int1, '', '', 'was inserted' 10011 FROM t0_template source_tab 10012WHERE MOD(f_int1,3) = 0 10013AND f_int1 BETWEEN @max_row_div2 AND @max_row 10014ON DUPLICATE KEY 10015UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10016f_int2 = 2 * @max_row + source_tab.f_int1, 10017f_charbig = 'was updated'; 10018 10019# check unique-1-a success: 1 10020 10021# check unique-1-b success: 1 10022DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10023UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10024f_int2 = CAST(f_char1 AS SIGNED INT), 10025f_charbig = CONCAT('===',f_char1,'===') 10026WHERE f_charbig = 'was updated'; 10027REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10028SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10029 FROM t0_template source_tab 10030WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10031 10032# check replace success: 1 10033DELETE FROM t1 10034WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10035DELETE FROM t1 10036WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10037f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10038UPDATE t1 SET f_int2 = f_int1, 10039f_char1 = CAST(f_int1 AS CHAR), 10040f_char2 = CAST(f_int1 AS CHAR), 10041f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10042WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10043SET AUTOCOMMIT= 0; 10044INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10045SELECT f_int1, f_int1, '', '', 'was inserted' 10046FROM t0_template source_tab 10047WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10048 10049# check transactions-1 success: 1 10050COMMIT WORK; 10051 10052# check transactions-2 success: 1 10053ROLLBACK WORK; 10054 10055# check transactions-3 success: 1 10056DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10057COMMIT WORK; 10058ROLLBACK WORK; 10059 10060# check transactions-4 success: 1 10061INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10062SELECT f_int1, f_int1, '', '', 'was inserted' 10063FROM t0_template source_tab 10064WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10065 10066# check transactions-5 success: 1 10067ROLLBACK WORK; 10068 10069# check transactions-6 success: 1 10070# INFO: Storage engine used for t1 seems to be transactional. 10071COMMIT; 10072 10073# check transactions-7 success: 1 10074DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10075COMMIT WORK; 10076SET @@session.sql_mode = 'traditional'; 10077Warnings: 10078Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10079SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10080INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10081SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10082'', '', 'was inserted' FROM t0_template 10083WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10084ERROR 22012: Division by 0 10085COMMIT; 10086 10087# check transactions-8 success: 1 10088# INFO: Storage engine used for t1 seems to be able to revert 10089# changes made by the failing statement. 10090SET @@session.sql_mode = ''; 10091Warnings: 10092Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10093SET AUTOCOMMIT= 1; 10094DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10095COMMIT WORK; 10096UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10097 10098# check special-1 success: 1 10099UPDATE t1 SET f_charbig = ''; 10100 10101# check special-2 success: 1 10102UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10103INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10104SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10105WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10106INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10107SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10108'just inserted' FROM t0_template 10109WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10110CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10111BEGIN 10112UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10113f_charbig = 'updated by trigger' 10114 WHERE f_int1 = new.f_int1; 10115END| 10116INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10117SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10118WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10119 10120# check trigger-1 success: 1 10121DROP TRIGGER trg_1; 10122UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10123f_int2 = CAST(f_char1 AS SIGNED INT), 10124f_charbig = 'just inserted' 10125 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10126DELETE FROM t0_aux 10127WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10128INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10129SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10130'just inserted' FROM t0_template 10131WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10132CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10133BEGIN 10134UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10135f_charbig = 'updated by trigger' 10136 WHERE f_int1 = new.f_int1; 10137END| 10138INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10139SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10140WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10141 10142# check trigger-2 success: 1 10143DROP TRIGGER trg_1; 10144UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10145f_int2 = CAST(f_char1 AS SIGNED INT), 10146f_charbig = 'just inserted' 10147 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10148DELETE FROM t0_aux 10149WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10150INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10151SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10152'just inserted' FROM t0_template 10153WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10154CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10155BEGIN 10156UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10157f_charbig = 'updated by trigger' 10158 WHERE f_int1 = new.f_int1; 10159END| 10160UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10161WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10162 10163# check trigger-3 success: 1 10164DROP TRIGGER trg_1; 10165UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10166f_int2 = CAST(f_char1 AS SIGNED INT), 10167f_charbig = 'just inserted' 10168 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10169DELETE FROM t0_aux 10170WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10171INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10172SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10173'just inserted' FROM t0_template 10174WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10175CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10176BEGIN 10177UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10178f_charbig = 'updated by trigger' 10179 WHERE f_int1 = - old.f_int1; 10180END| 10181UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10182WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10183 10184# check trigger-4 success: 1 10185DROP TRIGGER trg_1; 10186UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10187f_int2 = CAST(f_char1 AS SIGNED INT), 10188f_charbig = 'just inserted' 10189 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10190DELETE FROM t0_aux 10191WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10192INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10193SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10194'just inserted' FROM t0_template 10195WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10196CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10197BEGIN 10198UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10199f_charbig = 'updated by trigger' 10200 WHERE f_int1 = new.f_int1; 10201END| 10202UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10203WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10204 10205# check trigger-5 success: 1 10206DROP TRIGGER trg_1; 10207UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10208f_int2 = CAST(f_char1 AS SIGNED INT), 10209f_charbig = 'just inserted' 10210 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10211DELETE FROM t0_aux 10212WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10213INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10214SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10215'just inserted' FROM t0_template 10216WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10217CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10218BEGIN 10219UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10220f_charbig = 'updated by trigger' 10221 WHERE f_int1 = - old.f_int1; 10222END| 10223UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10224WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10225 10226# check trigger-6 success: 1 10227DROP TRIGGER trg_1; 10228UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10229f_int2 = CAST(f_char1 AS SIGNED INT), 10230f_charbig = 'just inserted' 10231 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10232DELETE FROM t0_aux 10233WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10234INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10235SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10236'just inserted' FROM t0_template 10237WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10238CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10239BEGIN 10240UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10241f_charbig = 'updated by trigger' 10242 WHERE f_int1 = - old.f_int1; 10243END| 10244DELETE FROM t0_aux 10245WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10246 10247# check trigger-7 success: 1 10248DROP TRIGGER trg_1; 10249UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10250f_int2 = CAST(f_char1 AS SIGNED INT), 10251f_charbig = 'just inserted' 10252 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10253DELETE FROM t0_aux 10254WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10255INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10256SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10257'just inserted' FROM t0_template 10258WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10259CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10260BEGIN 10261UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10262f_charbig = 'updated by trigger' 10263 WHERE f_int1 = - old.f_int1; 10264END| 10265DELETE FROM t0_aux 10266WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10267 10268# check trigger-8 success: 1 10269DROP TRIGGER trg_1; 10270UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10271f_int2 = CAST(f_char1 AS SIGNED INT), 10272f_charbig = 'just inserted' 10273 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10274DELETE FROM t0_aux 10275WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10276DELETE FROM t1 10277WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10278CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10279BEGIN 10280SET new.f_int1 = old.f_int1 + @max_row, 10281new.f_int2 = old.f_int2 - @max_row, 10282new.f_charbig = '####updated per update trigger####'; 10283END| 10284UPDATE t1 10285SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10286f_charbig = '####updated per update statement itself####'; 10287 10288# check trigger-9 success: 1 10289DROP TRIGGER trg_2; 10290UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10291f_int2 = CAST(f_char1 AS SIGNED INT), 10292f_charbig = CONCAT('===',f_char1,'==='); 10293CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10294BEGIN 10295SET new.f_int1 = new.f_int1 + @max_row, 10296new.f_int2 = new.f_int2 - @max_row, 10297new.f_charbig = '####updated per update trigger####'; 10298END| 10299UPDATE t1 10300SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10301f_charbig = '####updated per update statement itself####'; 10302 10303# check trigger-10 success: 1 10304DROP TRIGGER trg_2; 10305UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10306f_int2 = CAST(f_char1 AS SIGNED INT), 10307f_charbig = CONCAT('===',f_char1,'==='); 10308CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10309BEGIN 10310SET new.f_int1 = @my_max1 + @counter, 10311new.f_int2 = @my_min2 - @counter, 10312new.f_charbig = '####updated per insert trigger####'; 10313SET @counter = @counter + 1; 10314END| 10315SET @counter = 1; 10316SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10317INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10318SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10319CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10320WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10321ORDER BY f_int1; 10322DROP TRIGGER trg_3; 10323 10324# check trigger-11 success: 1 10325DELETE FROM t1 10326WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10327AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10328AND f_charbig = '####updated per insert trigger####'; 10329CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10330BEGIN 10331SET new.f_int1 = @my_max1 + @counter, 10332new.f_int2 = @my_min2 - @counter, 10333new.f_charbig = '####updated per insert trigger####'; 10334SET @counter = @counter + 1; 10335END| 10336SET @counter = 1; 10337SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10338INSERT INTO t1 (f_char1, f_char2, f_charbig) 10339SELECT CAST(f_int1 AS CHAR), 10340CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10341WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10342ORDER BY f_int1; 10343DROP TRIGGER trg_3; 10344 10345# check trigger-12 success: 1 10346DELETE FROM t1 10347WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10348AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10349AND f_charbig = '####updated per insert trigger####'; 10350ANALYZE TABLE t1; 10351Table Op Msg_type Msg_text 10352test.t1 analyze status OK 10353CHECK TABLE t1 EXTENDED; 10354Table Op Msg_type Msg_text 10355test.t1 check status OK 10356CHECKSUM TABLE t1 EXTENDED; 10357Table Checksum 10358test.t1 <some_value> 10359OPTIMIZE TABLE t1; 10360Table Op Msg_type Msg_text 10361test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 10362test.t1 optimize status OK 10363# check layout success: 1 10364REPAIR TABLE t1 EXTENDED; 10365Table Op Msg_type Msg_text 10366test.t1 repair status OK 10367# check layout success: 1 10368TRUNCATE t1; 10369 10370# check TRUNCATE success: 1 10371# check layout success: 1 10372# End usability test (inc/partition_check.inc) 10373DROP TABLE t1; 10374CREATE TABLE t1 ( 10375f_int1 INTEGER, 10376f_int2 INTEGER, 10377f_char1 CHAR(20), 10378f_char2 CHAR(20), 10379f_charbig VARCHAR(1000) 10380, PRIMARY KEY (f_int2,f_int1) 10381) 10382PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 10383(PARTITION part1 VALUES LESS THAN (0) 10384(SUBPARTITION subpart11, SUBPARTITION subpart12), 10385PARTITION part2 VALUES LESS THAN (5) 10386(SUBPARTITION subpart21, SUBPARTITION subpart22), 10387PARTITION part3 VALUES LESS THAN (10) 10388(SUBPARTITION subpart31, SUBPARTITION subpart32), 10389PARTITION part4 VALUES LESS THAN (2147483646) 10390(SUBPARTITION subpart41, SUBPARTITION subpart42)); 10391INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10392SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 10393WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 10394ALTER TABLE t1 MODIFY f_int2 BIGINT; 10395INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10396SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 10397WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 10398# Start usability test (inc/partition_check.inc) 10399create_command 10400SHOW CREATE TABLE t1; 10401Table Create Table 10402t1 CREATE TABLE `t1` ( 10403 `f_int1` int(11) NOT NULL, 10404 `f_int2` bigint(20) NOT NULL, 10405 `f_char1` char(20) DEFAULT NULL, 10406 `f_char2` char(20) DEFAULT NULL, 10407 `f_charbig` varchar(1000) DEFAULT NULL, 10408 PRIMARY KEY (`f_int2`,`f_int1`) 10409) ENGINE=TokuDB DEFAULT CHARSET=latin1 10410/*!50100 PARTITION BY RANGE (f_int1) 10411SUBPARTITION BY KEY (f_int1) 10412(PARTITION part1 VALUES LESS THAN (0) 10413 (SUBPARTITION subpart11 ENGINE = TokuDB, 10414 SUBPARTITION subpart12 ENGINE = TokuDB), 10415 PARTITION part2 VALUES LESS THAN (5) 10416 (SUBPARTITION subpart21 ENGINE = TokuDB, 10417 SUBPARTITION subpart22 ENGINE = TokuDB), 10418 PARTITION part3 VALUES LESS THAN (10) 10419 (SUBPARTITION subpart31 ENGINE = TokuDB, 10420 SUBPARTITION subpart32 ENGINE = TokuDB), 10421 PARTITION part4 VALUES LESS THAN (2147483646) 10422 (SUBPARTITION subpart41 ENGINE = TokuDB, 10423 SUBPARTITION subpart42 ENGINE = TokuDB)) */ 10424 10425# check prerequisites-1 success: 1 10426# check COUNT(*) success: 1 10427# check MIN/MAX(f_int1) success: 1 10428# check MIN/MAX(f_int2) success: 1 10429INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10430SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10431CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 10432WHERE f_int1 IN (2,3); 10433ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 10434# check prerequisites-3 success: 1 10435# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 10436INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10437SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10438CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10439WHERE f_int1 IN (2,3); 10440DELETE FROM t1 WHERE f_charbig = 'delete me'; 10441INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10442SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10443CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10444WHERE f_int1 IN (2,3); 10445DELETE FROM t1 WHERE f_charbig = 'delete me'; 10446# check read via f_int1 success: 1 10447# check read via f_int2 success: 1 10448 10449# check multiple-1 success: 1 10450DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10451 10452# check multiple-2 success: 1 10453INSERT INTO t1 SELECT * FROM t0_template 10454WHERE MOD(f_int1,3) = 0; 10455 10456# check multiple-3 success: 1 10457UPDATE t1 SET f_int1 = f_int1 + @max_row 10458WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10459AND @max_row_div2 + @max_row_div4; 10460 10461# check multiple-4 success: 1 10462DELETE FROM t1 10463WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10464AND @max_row_div2 + @max_row_div4 + @max_row; 10465 10466# check multiple-5 success: 1 10467SELECT COUNT(*) INTO @try_count FROM t0_template 10468WHERE MOD(f_int1,3) = 0 10469AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10470SELECT COUNT(*) INTO @clash_count 10471FROM t1 INNER JOIN t0_template USING(f_int1) 10472WHERE MOD(f_int1,3) = 0 10473AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10474SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10475INSERT INTO t1 10476SET f_int1 = @cur_value , f_int2 = @cur_value, 10477f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10478f_charbig = '#SINGLE#'; 10479 10480# check single-1 success: 1 10481SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10482INSERT INTO t1 10483SET f_int1 = @cur_value , f_int2 = @cur_value, 10484f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10485f_charbig = '#SINGLE#'; 10486 10487# check single-2 success: 1 10488SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 10489SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 10490UPDATE t1 SET f_int1 = @cur_value2 10491WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 10492 10493# check single-3 success: 1 10494SET @cur_value1= -1; 10495SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 10496UPDATE t1 SET f_int1 = @cur_value1 10497WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 10498 10499# check single-4 success: 1 10500SELECT MAX(f_int1) INTO @cur_value FROM t1; 10501DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 10502 10503# check single-5 success: 1 10504DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 10505 10506# check single-6 success: 1 10507INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 10508ERROR HY000: Table has no partition for value 2147483647 10509DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 10510INSERT t1 SET f_int1 = 0 , f_int2 = 0, 10511f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 10512f_charbig = '#NULL#'; 10513INSERT INTO t1 10514SET f_int1 = NULL , f_int2 = -@max_row, 10515f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 10516f_charbig = '#NULL#'; 10517ERROR 23000: Column 'f_int1' cannot be null 10518# check null success: 1 10519DELETE FROM t1 10520WHERE f_int1 = 0 AND f_int2 = 0 10521AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 10522AND f_charbig = '#NULL#'; 10523INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10524SELECT f_int1, f_int1, '', '', 'was inserted' 10525 FROM t0_template source_tab 10526WHERE MOD(f_int1,3) = 0 10527AND f_int1 BETWEEN @max_row_div2 AND @max_row 10528ON DUPLICATE KEY 10529UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 10530f_int2 = 2 * @max_row + source_tab.f_int1, 10531f_charbig = 'was updated'; 10532 10533# check unique-1-a success: 1 10534 10535# check unique-1-b success: 1 10536DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10537UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10538f_int2 = CAST(f_char1 AS SIGNED INT), 10539f_charbig = CONCAT('===',f_char1,'===') 10540WHERE f_charbig = 'was updated'; 10541REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10542SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 10543 FROM t0_template source_tab 10544WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10545 10546# check replace success: 1 10547DELETE FROM t1 10548WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 10549DELETE FROM t1 10550WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 10551f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 10552UPDATE t1 SET f_int2 = f_int1, 10553f_char1 = CAST(f_int1 AS CHAR), 10554f_char2 = CAST(f_int1 AS CHAR), 10555f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 10556WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 10557SET AUTOCOMMIT= 0; 10558INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10559SELECT f_int1, f_int1, '', '', 'was inserted' 10560FROM t0_template source_tab 10561WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10562 10563# check transactions-1 success: 1 10564COMMIT WORK; 10565 10566# check transactions-2 success: 1 10567ROLLBACK WORK; 10568 10569# check transactions-3 success: 1 10570DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10571COMMIT WORK; 10572ROLLBACK WORK; 10573 10574# check transactions-4 success: 1 10575INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10576SELECT f_int1, f_int1, '', '', 'was inserted' 10577FROM t0_template source_tab 10578WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10579 10580# check transactions-5 success: 1 10581ROLLBACK WORK; 10582 10583# check transactions-6 success: 1 10584# INFO: Storage engine used for t1 seems to be transactional. 10585COMMIT; 10586 10587# check transactions-7 success: 1 10588DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10589COMMIT WORK; 10590SET @@session.sql_mode = 'traditional'; 10591Warnings: 10592Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10593SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 10594INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10595SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 10596'', '', 'was inserted' FROM t0_template 10597WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 10598ERROR 22012: Division by 0 10599COMMIT; 10600 10601# check transactions-8 success: 1 10602# INFO: Storage engine used for t1 seems to be able to revert 10603# changes made by the failing statement. 10604SET @@session.sql_mode = ''; 10605Warnings: 10606Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 10607SET AUTOCOMMIT= 1; 10608DELETE FROM t1 WHERE f_charbig = 'was inserted'; 10609COMMIT WORK; 10610UPDATE t1 SET f_charbig = REPEAT('b', 1000); 10611 10612# check special-1 success: 1 10613UPDATE t1 SET f_charbig = ''; 10614 10615# check special-2 success: 1 10616UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 10617INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10618SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 10619WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10620INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10621SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10622'just inserted' FROM t0_template 10623WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10624CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 10625BEGIN 10626UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10627f_charbig = 'updated by trigger' 10628 WHERE f_int1 = new.f_int1; 10629END| 10630INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10631SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10632WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10633 10634# check trigger-1 success: 1 10635DROP TRIGGER trg_1; 10636UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10637f_int2 = CAST(f_char1 AS SIGNED INT), 10638f_charbig = 'just inserted' 10639 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10640DELETE FROM t0_aux 10641WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10642INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10643SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10644'just inserted' FROM t0_template 10645WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10646CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 10647BEGIN 10648UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10649f_charbig = 'updated by trigger' 10650 WHERE f_int1 = new.f_int1; 10651END| 10652INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10653SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 10654WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10655 10656# check trigger-2 success: 1 10657DROP TRIGGER trg_1; 10658UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10659f_int2 = CAST(f_char1 AS SIGNED INT), 10660f_charbig = 'just inserted' 10661 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10662DELETE FROM t0_aux 10663WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10664INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10665SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10666'just inserted' FROM t0_template 10667WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10668CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10669BEGIN 10670UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10671f_charbig = 'updated by trigger' 10672 WHERE f_int1 = new.f_int1; 10673END| 10674UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10675WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10676 10677# check trigger-3 success: 1 10678DROP TRIGGER trg_1; 10679UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10680f_int2 = CAST(f_char1 AS SIGNED INT), 10681f_charbig = 'just inserted' 10682 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10683DELETE FROM t0_aux 10684WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10685INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10686SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10687'just inserted' FROM t0_template 10688WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10689CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 10690BEGIN 10691UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10692f_charbig = 'updated by trigger' 10693 WHERE f_int1 = - old.f_int1; 10694END| 10695UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10696WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10697 10698# check trigger-4 success: 1 10699DROP TRIGGER trg_1; 10700UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10701f_int2 = CAST(f_char1 AS SIGNED INT), 10702f_charbig = 'just inserted' 10703 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10704DELETE FROM t0_aux 10705WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10706INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10707SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10708'just inserted' FROM t0_template 10709WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10710CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10711BEGIN 10712UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10713f_charbig = 'updated by trigger' 10714 WHERE f_int1 = new.f_int1; 10715END| 10716UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10717WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10718 10719# check trigger-5 success: 1 10720DROP TRIGGER trg_1; 10721UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10722f_int2 = CAST(f_char1 AS SIGNED INT), 10723f_charbig = 'just inserted' 10724 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10725DELETE FROM t0_aux 10726WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10727INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10728SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10729'just inserted' FROM t0_template 10730WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10731CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 10732BEGIN 10733UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10734f_charbig = 'updated by trigger' 10735 WHERE f_int1 = - old.f_int1; 10736END| 10737UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 10738WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10739 10740# check trigger-6 success: 1 10741DROP TRIGGER trg_1; 10742UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10743f_int2 = CAST(f_char1 AS SIGNED INT), 10744f_charbig = 'just inserted' 10745 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10746DELETE FROM t0_aux 10747WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10748INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10749SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10750'just inserted' FROM t0_template 10751WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10752CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 10753BEGIN 10754UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10755f_charbig = 'updated by trigger' 10756 WHERE f_int1 = - old.f_int1; 10757END| 10758DELETE FROM t0_aux 10759WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10760 10761# check trigger-7 success: 1 10762DROP TRIGGER trg_1; 10763UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10764f_int2 = CAST(f_char1 AS SIGNED INT), 10765f_charbig = 'just inserted' 10766 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10767DELETE FROM t0_aux 10768WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10769INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 10770SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 10771'just inserted' FROM t0_template 10772WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10773CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 10774BEGIN 10775UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 10776f_charbig = 'updated by trigger' 10777 WHERE f_int1 = - old.f_int1; 10778END| 10779DELETE FROM t0_aux 10780WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 10781 10782# check trigger-8 success: 1 10783DROP TRIGGER trg_1; 10784UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10785f_int2 = CAST(f_char1 AS SIGNED INT), 10786f_charbig = 'just inserted' 10787 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 10788DELETE FROM t0_aux 10789WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10790DELETE FROM t1 10791WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 10792CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10793BEGIN 10794SET new.f_int1 = old.f_int1 + @max_row, 10795new.f_int2 = old.f_int2 - @max_row, 10796new.f_charbig = '####updated per update trigger####'; 10797END| 10798UPDATE t1 10799SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10800f_charbig = '####updated per update statement itself####'; 10801 10802# check trigger-9 success: 1 10803DROP TRIGGER trg_2; 10804UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10805f_int2 = CAST(f_char1 AS SIGNED INT), 10806f_charbig = CONCAT('===',f_char1,'==='); 10807CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 10808BEGIN 10809SET new.f_int1 = new.f_int1 + @max_row, 10810new.f_int2 = new.f_int2 - @max_row, 10811new.f_charbig = '####updated per update trigger####'; 10812END| 10813UPDATE t1 10814SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 10815f_charbig = '####updated per update statement itself####'; 10816 10817# check trigger-10 success: 1 10818DROP TRIGGER trg_2; 10819UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 10820f_int2 = CAST(f_char1 AS SIGNED INT), 10821f_charbig = CONCAT('===',f_char1,'==='); 10822CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10823BEGIN 10824SET new.f_int1 = @my_max1 + @counter, 10825new.f_int2 = @my_min2 - @counter, 10826new.f_charbig = '####updated per insert trigger####'; 10827SET @counter = @counter + 1; 10828END| 10829SET @counter = 1; 10830SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10831INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10832SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10833CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10834WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10835ORDER BY f_int1; 10836DROP TRIGGER trg_3; 10837 10838# check trigger-11 success: 1 10839DELETE FROM t1 10840WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 10841AND f_int2 <> CAST(f_char1 AS SIGNED INT) 10842AND f_charbig = '####updated per insert trigger####'; 10843CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 10844BEGIN 10845SET new.f_int1 = @my_max1 + @counter, 10846new.f_int2 = @my_min2 - @counter, 10847new.f_charbig = '####updated per insert trigger####'; 10848SET @counter = @counter + 1; 10849END| 10850SET @counter = 1; 10851SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 10852INSERT INTO t1 (f_char1, f_char2, f_charbig) 10853SELECT CAST(f_int1 AS CHAR), 10854CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 10855WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 10856ORDER BY f_int1; 10857DROP TRIGGER trg_3; 10858 10859# check trigger-12 success: 1 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####'; 10864ANALYZE TABLE t1; 10865Table Op Msg_type Msg_text 10866test.t1 analyze status OK 10867CHECK TABLE t1 EXTENDED; 10868Table Op Msg_type Msg_text 10869test.t1 check status OK 10870CHECKSUM TABLE t1 EXTENDED; 10871Table Checksum 10872test.t1 <some_value> 10873OPTIMIZE TABLE t1; 10874Table Op Msg_type Msg_text 10875test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 10876test.t1 optimize status OK 10877# check layout success: 1 10878REPAIR TABLE t1 EXTENDED; 10879Table Op Msg_type Msg_text 10880test.t1 repair status OK 10881# check layout success: 1 10882TRUNCATE t1; 10883 10884# check TRUNCATE success: 1 10885# check layout success: 1 10886# End usability test (inc/partition_check.inc) 10887DROP TABLE t1; 10888CREATE TABLE t1 ( 10889f_int1 INTEGER, 10890f_int2 INTEGER, 10891f_char1 CHAR(20), 10892f_char2 CHAR(20), 10893f_charbig VARCHAR(1000) 10894, PRIMARY KEY (f_int2,f_int1) 10895) 10896PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 10897(PARTITION part1 VALUES IN (0) 10898(SUBPARTITION sp11, SUBPARTITION sp12), 10899PARTITION part2 VALUES IN (1) 10900(SUBPARTITION sp21, SUBPARTITION sp22), 10901PARTITION part3 VALUES IN (2) 10902(SUBPARTITION sp31, SUBPARTITION sp32), 10903PARTITION part4 VALUES IN (NULL) 10904(SUBPARTITION sp41, SUBPARTITION sp42)); 10905INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10906SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 10907WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 10908ALTER TABLE t1 MODIFY f_int2 BIGINT; 10909INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 10910SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 10911WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 10912# Start usability test (inc/partition_check.inc) 10913create_command 10914SHOW CREATE TABLE t1; 10915Table Create Table 10916t1 CREATE TABLE `t1` ( 10917 `f_int1` int(11) NOT NULL, 10918 `f_int2` bigint(20) NOT NULL, 10919 `f_char1` char(20) DEFAULT NULL, 10920 `f_char2` char(20) DEFAULT NULL, 10921 `f_charbig` varchar(1000) DEFAULT NULL, 10922 PRIMARY KEY (`f_int2`,`f_int1`) 10923) ENGINE=TokuDB DEFAULT CHARSET=latin1 10924/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 10925SUBPARTITION BY HASH (f_int1 + 1) 10926(PARTITION part1 VALUES IN (0) 10927 (SUBPARTITION sp11 ENGINE = TokuDB, 10928 SUBPARTITION sp12 ENGINE = TokuDB), 10929 PARTITION part2 VALUES IN (1) 10930 (SUBPARTITION sp21 ENGINE = TokuDB, 10931 SUBPARTITION sp22 ENGINE = TokuDB), 10932 PARTITION part3 VALUES IN (2) 10933 (SUBPARTITION sp31 ENGINE = TokuDB, 10934 SUBPARTITION sp32 ENGINE = TokuDB), 10935 PARTITION part4 VALUES IN (NULL) 10936 (SUBPARTITION sp41 ENGINE = TokuDB, 10937 SUBPARTITION sp42 ENGINE = TokuDB)) */ 10938 10939# check prerequisites-1 success: 1 10940# check COUNT(*) success: 1 10941# check MIN/MAX(f_int1) success: 1 10942# check MIN/MAX(f_int2) success: 1 10943INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10944SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 10945CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 10946WHERE f_int1 IN (2,3); 10947ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 10948# check prerequisites-3 success: 1 10949# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 10950INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10951SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10952CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10953WHERE f_int1 IN (2,3); 10954DELETE FROM t1 WHERE f_charbig = 'delete me'; 10955INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 10956SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 10957CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 10958WHERE f_int1 IN (2,3); 10959DELETE FROM t1 WHERE f_charbig = 'delete me'; 10960# check read via f_int1 success: 1 10961# check read via f_int2 success: 1 10962 10963# check multiple-1 success: 1 10964DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 10965 10966# check multiple-2 success: 1 10967INSERT INTO t1 SELECT * FROM t0_template 10968WHERE MOD(f_int1,3) = 0; 10969 10970# check multiple-3 success: 1 10971UPDATE t1 SET f_int1 = f_int1 + @max_row 10972WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 10973AND @max_row_div2 + @max_row_div4; 10974 10975# check multiple-4 success: 1 10976DELETE FROM t1 10977WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 10978AND @max_row_div2 + @max_row_div4 + @max_row; 10979 10980# check multiple-5 success: 1 10981SELECT COUNT(*) INTO @try_count FROM t0_template 10982WHERE MOD(f_int1,3) = 0 10983AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10984SELECT COUNT(*) INTO @clash_count 10985FROM t1 INNER JOIN t0_template USING(f_int1) 10986WHERE MOD(f_int1,3) = 0 10987AND f_int1 BETWEEN @max_row_div2 AND @max_row; 10988SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 10989INSERT INTO t1 10990SET f_int1 = @cur_value , f_int2 = @cur_value, 10991f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10992f_charbig = '#SINGLE#'; 10993 10994# check single-1 success: 1 10995SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 10996INSERT INTO t1 10997SET f_int1 = @cur_value , f_int2 = @cur_value, 10998f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 10999f_charbig = '#SINGLE#'; 11000 11001# check single-2 success: 1 11002SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11003SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11004UPDATE t1 SET f_int1 = @cur_value2 11005WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11006 11007# check single-3 success: 1 11008SET @cur_value1= -1; 11009SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11010UPDATE t1 SET f_int1 = @cur_value1 11011WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11012 11013# check single-4 success: 1 11014SELECT MAX(f_int1) INTO @cur_value FROM t1; 11015DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11016 11017# check single-5 success: 1 11018DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11019 11020# check single-6 success: 1 11021INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11022 11023# check single-7 success: 1 11024DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 11025DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11026INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11027f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11028f_charbig = '#NULL#'; 11029INSERT INTO t1 11030SET f_int1 = NULL , f_int2 = -@max_row, 11031f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11032f_charbig = '#NULL#'; 11033ERROR 23000: Column 'f_int1' cannot be null 11034# check null success: 1 11035DELETE FROM t1 11036WHERE f_int1 = 0 AND f_int2 = 0 11037AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11038AND f_charbig = '#NULL#'; 11039INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11040SELECT f_int1, f_int1, '', '', 'was inserted' 11041 FROM t0_template source_tab 11042WHERE MOD(f_int1,3) = 0 11043AND f_int1 BETWEEN @max_row_div2 AND @max_row 11044ON DUPLICATE KEY 11045UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11046f_int2 = 2 * @max_row + source_tab.f_int1, 11047f_charbig = 'was updated'; 11048 11049# check unique-1-a success: 1 11050 11051# check unique-1-b success: 1 11052DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11053UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11054f_int2 = CAST(f_char1 AS SIGNED INT), 11055f_charbig = CONCAT('===',f_char1,'===') 11056WHERE f_charbig = 'was updated'; 11057REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11058SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11059 FROM t0_template source_tab 11060WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11061 11062# check replace success: 1 11063DELETE FROM t1 11064WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11065DELETE FROM t1 11066WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11067f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11068UPDATE t1 SET f_int2 = f_int1, 11069f_char1 = CAST(f_int1 AS CHAR), 11070f_char2 = CAST(f_int1 AS CHAR), 11071f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11072WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11073SET AUTOCOMMIT= 0; 11074INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11075SELECT f_int1, f_int1, '', '', 'was inserted' 11076FROM t0_template source_tab 11077WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11078 11079# check transactions-1 success: 1 11080COMMIT WORK; 11081 11082# check transactions-2 success: 1 11083ROLLBACK WORK; 11084 11085# check transactions-3 success: 1 11086DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11087COMMIT WORK; 11088ROLLBACK WORK; 11089 11090# check transactions-4 success: 1 11091INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11092SELECT f_int1, f_int1, '', '', 'was inserted' 11093FROM t0_template source_tab 11094WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11095 11096# check transactions-5 success: 1 11097ROLLBACK WORK; 11098 11099# check transactions-6 success: 1 11100# INFO: Storage engine used for t1 seems to be transactional. 11101COMMIT; 11102 11103# check transactions-7 success: 1 11104DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11105COMMIT WORK; 11106SET @@session.sql_mode = 'traditional'; 11107Warnings: 11108Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11109SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11110INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11111SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11112'', '', 'was inserted' FROM t0_template 11113WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11114ERROR 22012: Division by 0 11115COMMIT; 11116 11117# check transactions-8 success: 1 11118# INFO: Storage engine used for t1 seems to be able to revert 11119# changes made by the failing statement. 11120SET @@session.sql_mode = ''; 11121Warnings: 11122Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11123SET AUTOCOMMIT= 1; 11124DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11125COMMIT WORK; 11126UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11127 11128# check special-1 success: 1 11129UPDATE t1 SET f_charbig = ''; 11130 11131# check special-2 success: 1 11132UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11133INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11134SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11135WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11136INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11137SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11138'just inserted' FROM t0_template 11139WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11140CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11141BEGIN 11142UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11143f_charbig = 'updated by trigger' 11144 WHERE f_int1 = new.f_int1; 11145END| 11146INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11147SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11148WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11149 11150# check trigger-1 success: 1 11151DROP TRIGGER trg_1; 11152UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11153f_int2 = CAST(f_char1 AS SIGNED INT), 11154f_charbig = 'just inserted' 11155 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11156DELETE FROM t0_aux 11157WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11158INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11159SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11160'just inserted' FROM t0_template 11161WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11162CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11163BEGIN 11164UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11165f_charbig = 'updated by trigger' 11166 WHERE f_int1 = new.f_int1; 11167END| 11168INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11169SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11170WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11171 11172# check trigger-2 success: 1 11173DROP TRIGGER trg_1; 11174UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11175f_int2 = CAST(f_char1 AS SIGNED INT), 11176f_charbig = 'just inserted' 11177 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11178DELETE FROM t0_aux 11179WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11180INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11181SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11182'just inserted' FROM t0_template 11183WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11184CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11185BEGIN 11186UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11187f_charbig = 'updated by trigger' 11188 WHERE f_int1 = new.f_int1; 11189END| 11190UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11191WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11192 11193# check trigger-3 success: 1 11194DROP TRIGGER trg_1; 11195UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11196f_int2 = CAST(f_char1 AS SIGNED INT), 11197f_charbig = 'just inserted' 11198 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11199DELETE FROM t0_aux 11200WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11201INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11202SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11203'just inserted' FROM t0_template 11204WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11205CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11206BEGIN 11207UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11208f_charbig = 'updated by trigger' 11209 WHERE f_int1 = - old.f_int1; 11210END| 11211UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11212WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11213 11214# check trigger-4 success: 1 11215DROP TRIGGER trg_1; 11216UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11217f_int2 = CAST(f_char1 AS SIGNED INT), 11218f_charbig = 'just inserted' 11219 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11220DELETE FROM t0_aux 11221WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11222INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11223SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11224'just inserted' FROM t0_template 11225WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11226CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11227BEGIN 11228UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11229f_charbig = 'updated by trigger' 11230 WHERE f_int1 = new.f_int1; 11231END| 11232UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11233WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11234 11235# check trigger-5 success: 1 11236DROP TRIGGER trg_1; 11237UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11238f_int2 = CAST(f_char1 AS SIGNED INT), 11239f_charbig = 'just inserted' 11240 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11241DELETE FROM t0_aux 11242WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11243INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11244SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11245'just inserted' FROM t0_template 11246WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11247CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11248BEGIN 11249UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11250f_charbig = 'updated by trigger' 11251 WHERE f_int1 = - old.f_int1; 11252END| 11253UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11254WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11255 11256# check trigger-6 success: 1 11257DROP TRIGGER trg_1; 11258UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11259f_int2 = CAST(f_char1 AS SIGNED INT), 11260f_charbig = 'just inserted' 11261 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11262DELETE FROM t0_aux 11263WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11264INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11265SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11266'just inserted' FROM t0_template 11267WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11268CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11269BEGIN 11270UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11271f_charbig = 'updated by trigger' 11272 WHERE f_int1 = - old.f_int1; 11273END| 11274DELETE FROM t0_aux 11275WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11276 11277# check trigger-7 success: 1 11278DROP TRIGGER trg_1; 11279UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11280f_int2 = CAST(f_char1 AS SIGNED INT), 11281f_charbig = 'just inserted' 11282 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11283DELETE FROM t0_aux 11284WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11285INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11286SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11287'just inserted' FROM t0_template 11288WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11289CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 11290BEGIN 11291UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11292f_charbig = 'updated by trigger' 11293 WHERE f_int1 = - old.f_int1; 11294END| 11295DELETE FROM t0_aux 11296WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11297 11298# check trigger-8 success: 1 11299DROP TRIGGER trg_1; 11300UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11301f_int2 = CAST(f_char1 AS SIGNED INT), 11302f_charbig = 'just inserted' 11303 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11304DELETE FROM t0_aux 11305WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11306DELETE FROM t1 11307WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11308CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11309BEGIN 11310SET new.f_int1 = old.f_int1 + @max_row, 11311new.f_int2 = old.f_int2 - @max_row, 11312new.f_charbig = '####updated per update trigger####'; 11313END| 11314UPDATE t1 11315SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11316f_charbig = '####updated per update statement itself####'; 11317 11318# check trigger-9 success: 1 11319DROP TRIGGER trg_2; 11320UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11321f_int2 = CAST(f_char1 AS SIGNED INT), 11322f_charbig = CONCAT('===',f_char1,'==='); 11323CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11324BEGIN 11325SET new.f_int1 = new.f_int1 + @max_row, 11326new.f_int2 = new.f_int2 - @max_row, 11327new.f_charbig = '####updated per update trigger####'; 11328END| 11329UPDATE t1 11330SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11331f_charbig = '####updated per update statement itself####'; 11332 11333# check trigger-10 success: 1 11334DROP TRIGGER trg_2; 11335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11336f_int2 = CAST(f_char1 AS SIGNED INT), 11337f_charbig = CONCAT('===',f_char1,'==='); 11338CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11339BEGIN 11340SET new.f_int1 = @my_max1 + @counter, 11341new.f_int2 = @my_min2 - @counter, 11342new.f_charbig = '####updated per insert trigger####'; 11343SET @counter = @counter + 1; 11344END| 11345SET @counter = 1; 11346SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11347INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11348SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11349CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11350WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11351ORDER BY f_int1; 11352DROP TRIGGER trg_3; 11353 11354# check trigger-11 success: 1 11355DELETE FROM t1 11356WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11357AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11358AND f_charbig = '####updated per insert trigger####'; 11359CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11360BEGIN 11361SET new.f_int1 = @my_max1 + @counter, 11362new.f_int2 = @my_min2 - @counter, 11363new.f_charbig = '####updated per insert trigger####'; 11364SET @counter = @counter + 1; 11365END| 11366SET @counter = 1; 11367SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11368INSERT INTO t1 (f_char1, f_char2, f_charbig) 11369SELECT CAST(f_int1 AS CHAR), 11370CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11371WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11372ORDER BY f_int1; 11373DROP TRIGGER trg_3; 11374 11375# check trigger-12 success: 1 11376DELETE FROM t1 11377WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11378AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11379AND f_charbig = '####updated per insert trigger####'; 11380ANALYZE TABLE t1; 11381Table Op Msg_type Msg_text 11382test.t1 analyze status OK 11383CHECK TABLE t1 EXTENDED; 11384Table Op Msg_type Msg_text 11385test.t1 check status OK 11386CHECKSUM TABLE t1 EXTENDED; 11387Table Checksum 11388test.t1 <some_value> 11389OPTIMIZE TABLE t1; 11390Table Op Msg_type Msg_text 11391test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 11392test.t1 optimize status OK 11393# check layout success: 1 11394REPAIR TABLE t1 EXTENDED; 11395Table Op Msg_type Msg_text 11396test.t1 repair status OK 11397# check layout success: 1 11398TRUNCATE t1; 11399 11400# check TRUNCATE success: 1 11401# check layout success: 1 11402# End usability test (inc/partition_check.inc) 11403DROP TABLE t1; 11404CREATE TABLE t1 ( 11405f_int1 INTEGER, 11406f_int2 INTEGER, 11407f_char1 CHAR(20), 11408f_char2 CHAR(20), 11409f_charbig VARCHAR(1000) 11410, PRIMARY KEY (f_int2,f_int1) 11411) 11412PARTITION BY LIST(ABS(MOD(f_int1,2))) 11413SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 11414(PARTITION part1 VALUES IN (0), 11415PARTITION part2 VALUES IN (1), 11416PARTITION part3 VALUES IN (NULL)); 11417INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11418SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11419WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 11420ALTER TABLE t1 MODIFY f_int2 BIGINT; 11421INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11422SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11423WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 11424# Start usability test (inc/partition_check.inc) 11425create_command 11426SHOW CREATE TABLE t1; 11427Table Create Table 11428t1 CREATE TABLE `t1` ( 11429 `f_int1` int(11) NOT NULL, 11430 `f_int2` bigint(20) NOT NULL, 11431 `f_char1` char(20) DEFAULT NULL, 11432 `f_char2` char(20) DEFAULT NULL, 11433 `f_charbig` varchar(1000) DEFAULT NULL, 11434 PRIMARY KEY (`f_int2`,`f_int1`) 11435) ENGINE=TokuDB DEFAULT CHARSET=latin1 11436/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 11437SUBPARTITION BY KEY (f_int1) 11438SUBPARTITIONS 3 11439(PARTITION part1 VALUES IN (0) ENGINE = TokuDB, 11440 PARTITION part2 VALUES IN (1) ENGINE = TokuDB, 11441 PARTITION part3 VALUES IN (NULL) ENGINE = TokuDB) */ 11442 11443# check prerequisites-1 success: 1 11444# check COUNT(*) success: 1 11445# check MIN/MAX(f_int1) success: 1 11446# check MIN/MAX(f_int2) success: 1 11447INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11448SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11449CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11450WHERE f_int1 IN (2,3); 11451ERROR 23000: Duplicate entry '2-2' for key 'PRIMARY' 11452# check prerequisites-3 success: 1 11453# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11454INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11455SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11456CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11457WHERE f_int1 IN (2,3); 11458DELETE FROM t1 WHERE f_charbig = 'delete me'; 11459INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11460SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11461CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11462WHERE f_int1 IN (2,3); 11463DELETE FROM t1 WHERE f_charbig = 'delete me'; 11464# check read via f_int1 success: 1 11465# check read via f_int2 success: 1 11466 11467# check multiple-1 success: 1 11468DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11469 11470# check multiple-2 success: 1 11471INSERT INTO t1 SELECT * FROM t0_template 11472WHERE MOD(f_int1,3) = 0; 11473 11474# check multiple-3 success: 1 11475UPDATE t1 SET f_int1 = f_int1 + @max_row 11476WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11477AND @max_row_div2 + @max_row_div4; 11478 11479# check multiple-4 success: 1 11480DELETE FROM t1 11481WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11482AND @max_row_div2 + @max_row_div4 + @max_row; 11483 11484# check multiple-5 success: 1 11485SELECT COUNT(*) INTO @try_count FROM t0_template 11486WHERE MOD(f_int1,3) = 0 11487AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11488SELECT COUNT(*) INTO @clash_count 11489FROM t1 INNER JOIN t0_template USING(f_int1) 11490WHERE MOD(f_int1,3) = 0 11491AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11492SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11493INSERT INTO t1 11494SET f_int1 = @cur_value , f_int2 = @cur_value, 11495f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11496f_charbig = '#SINGLE#'; 11497 11498# check single-1 success: 1 11499SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11500INSERT INTO t1 11501SET f_int1 = @cur_value , f_int2 = @cur_value, 11502f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11503f_charbig = '#SINGLE#'; 11504 11505# check single-2 success: 1 11506SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 11507SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 11508UPDATE t1 SET f_int1 = @cur_value2 11509WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 11510 11511# check single-3 success: 1 11512SET @cur_value1= -1; 11513SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 11514UPDATE t1 SET f_int1 = @cur_value1 11515WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 11516 11517# check single-4 success: 1 11518SELECT MAX(f_int1) INTO @cur_value FROM t1; 11519DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 11520 11521# check single-5 success: 1 11522DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 11523 11524# check single-6 success: 1 11525INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 11526 11527# check single-7 success: 1 11528DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 11529DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 11530INSERT t1 SET f_int1 = 0 , f_int2 = 0, 11531f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 11532f_charbig = '#NULL#'; 11533INSERT INTO t1 11534SET f_int1 = NULL , f_int2 = -@max_row, 11535f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 11536f_charbig = '#NULL#'; 11537ERROR 23000: Column 'f_int1' cannot be null 11538# check null success: 1 11539DELETE FROM t1 11540WHERE f_int1 = 0 AND f_int2 = 0 11541AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 11542AND f_charbig = '#NULL#'; 11543INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11544SELECT f_int1, f_int1, '', '', 'was inserted' 11545 FROM t0_template source_tab 11546WHERE MOD(f_int1,3) = 0 11547AND f_int1 BETWEEN @max_row_div2 AND @max_row 11548ON DUPLICATE KEY 11549UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 11550f_int2 = 2 * @max_row + source_tab.f_int1, 11551f_charbig = 'was updated'; 11552 11553# check unique-1-a success: 1 11554 11555# check unique-1-b success: 1 11556DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11557UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11558f_int2 = CAST(f_char1 AS SIGNED INT), 11559f_charbig = CONCAT('===',f_char1,'===') 11560WHERE f_charbig = 'was updated'; 11561REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11562SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 11563 FROM t0_template source_tab 11564WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11565 11566# check replace success: 1 11567DELETE FROM t1 11568WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 11569DELETE FROM t1 11570WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 11571f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 11572UPDATE t1 SET f_int2 = f_int1, 11573f_char1 = CAST(f_int1 AS CHAR), 11574f_char2 = CAST(f_int1 AS CHAR), 11575f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 11576WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 11577SET AUTOCOMMIT= 0; 11578INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11579SELECT f_int1, f_int1, '', '', 'was inserted' 11580FROM t0_template source_tab 11581WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11582 11583# check transactions-1 success: 1 11584COMMIT WORK; 11585 11586# check transactions-2 success: 1 11587ROLLBACK WORK; 11588 11589# check transactions-3 success: 1 11590DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11591COMMIT WORK; 11592ROLLBACK WORK; 11593 11594# check transactions-4 success: 1 11595INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11596SELECT f_int1, f_int1, '', '', 'was inserted' 11597FROM t0_template source_tab 11598WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11599 11600# check transactions-5 success: 1 11601ROLLBACK WORK; 11602 11603# check transactions-6 success: 1 11604# INFO: Storage engine used for t1 seems to be transactional. 11605COMMIT; 11606 11607# check transactions-7 success: 1 11608DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11609COMMIT WORK; 11610SET @@session.sql_mode = 'traditional'; 11611Warnings: 11612Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11613SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 11614INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11615SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 11616'', '', 'was inserted' FROM t0_template 11617WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 11618ERROR 22012: Division by 0 11619COMMIT; 11620 11621# check transactions-8 success: 1 11622# INFO: Storage engine used for t1 seems to be able to revert 11623# changes made by the failing statement. 11624SET @@session.sql_mode = ''; 11625Warnings: 11626Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 11627SET AUTOCOMMIT= 1; 11628DELETE FROM t1 WHERE f_charbig = 'was inserted'; 11629COMMIT WORK; 11630UPDATE t1 SET f_charbig = REPEAT('b', 1000); 11631 11632# check special-1 success: 1 11633UPDATE t1 SET f_charbig = ''; 11634 11635# check special-2 success: 1 11636UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 11637INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11638SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 11639WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11640INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11641SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11642'just inserted' FROM t0_template 11643WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11644CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 11645BEGIN 11646UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11647f_charbig = 'updated by trigger' 11648 WHERE f_int1 = new.f_int1; 11649END| 11650INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11651SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11652WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11653 11654# check trigger-1 success: 1 11655DROP TRIGGER trg_1; 11656UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11657f_int2 = CAST(f_char1 AS SIGNED INT), 11658f_charbig = 'just inserted' 11659 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11660DELETE FROM t0_aux 11661WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11662INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11663SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11664'just inserted' FROM t0_template 11665WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11666CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 11667BEGIN 11668UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11669f_charbig = 'updated by trigger' 11670 WHERE f_int1 = new.f_int1; 11671END| 11672INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11673SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 11674WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11675 11676# check trigger-2 success: 1 11677DROP TRIGGER trg_1; 11678UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11679f_int2 = CAST(f_char1 AS SIGNED INT), 11680f_charbig = 'just inserted' 11681 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11682DELETE FROM t0_aux 11683WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11684INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11685SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11686'just inserted' FROM t0_template 11687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11688CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11689BEGIN 11690UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11691f_charbig = 'updated by trigger' 11692 WHERE f_int1 = new.f_int1; 11693END| 11694UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11695WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11696 11697# check trigger-3 success: 1 11698DROP TRIGGER trg_1; 11699UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11700f_int2 = CAST(f_char1 AS SIGNED INT), 11701f_charbig = 'just inserted' 11702 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11703DELETE FROM t0_aux 11704WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11705INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11706SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11707'just inserted' FROM t0_template 11708WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11709CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 11710BEGIN 11711UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11712f_charbig = 'updated by trigger' 11713 WHERE f_int1 = - old.f_int1; 11714END| 11715UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11716WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11717 11718# check trigger-4 success: 1 11719DROP TRIGGER trg_1; 11720UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11721f_int2 = CAST(f_char1 AS SIGNED INT), 11722f_charbig = 'just inserted' 11723 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11724DELETE FROM t0_aux 11725WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11726INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11727SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11728'just inserted' FROM t0_template 11729WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11730CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11731BEGIN 11732UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11733f_charbig = 'updated by trigger' 11734 WHERE f_int1 = new.f_int1; 11735END| 11736UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11737WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11738 11739# check trigger-5 success: 1 11740DROP TRIGGER trg_1; 11741UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11742f_int2 = CAST(f_char1 AS SIGNED INT), 11743f_charbig = 'just inserted' 11744 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11745DELETE FROM t0_aux 11746WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11747INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11748SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11749'just inserted' FROM t0_template 11750WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11751CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 11752BEGIN 11753UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11754f_charbig = 'updated by trigger' 11755 WHERE f_int1 = - old.f_int1; 11756END| 11757UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 11758WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11759 11760# check trigger-6 success: 1 11761DROP TRIGGER trg_1; 11762UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11763f_int2 = CAST(f_char1 AS SIGNED INT), 11764f_charbig = 'just inserted' 11765 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11766DELETE FROM t0_aux 11767WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11768INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11769SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11770'just inserted' FROM t0_template 11771WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11772CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 11773BEGIN 11774UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11775f_charbig = 'updated by trigger' 11776 WHERE f_int1 = - old.f_int1; 11777END| 11778DELETE FROM t0_aux 11779WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11780 11781# check trigger-7 success: 1 11782DROP TRIGGER trg_1; 11783UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11784f_int2 = CAST(f_char1 AS SIGNED INT), 11785f_charbig = 'just inserted' 11786 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11787DELETE FROM t0_aux 11788WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11789INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 11790SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 11791'just inserted' FROM t0_template 11792WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11793CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 11794BEGIN 11795UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 11796f_charbig = 'updated by trigger' 11797 WHERE f_int1 = - old.f_int1; 11798END| 11799DELETE FROM t0_aux 11800WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 11801 11802# check trigger-8 success: 1 11803DROP TRIGGER trg_1; 11804UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11805f_int2 = CAST(f_char1 AS SIGNED INT), 11806f_charbig = 'just inserted' 11807 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 11808DELETE FROM t0_aux 11809WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11810DELETE FROM t1 11811WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 11812CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11813BEGIN 11814SET new.f_int1 = old.f_int1 + @max_row, 11815new.f_int2 = old.f_int2 - @max_row, 11816new.f_charbig = '####updated per update trigger####'; 11817END| 11818UPDATE t1 11819SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11820f_charbig = '####updated per update statement itself####'; 11821 11822# check trigger-9 success: 1 11823DROP TRIGGER trg_2; 11824UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11825f_int2 = CAST(f_char1 AS SIGNED INT), 11826f_charbig = CONCAT('===',f_char1,'==='); 11827CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 11828BEGIN 11829SET new.f_int1 = new.f_int1 + @max_row, 11830new.f_int2 = new.f_int2 - @max_row, 11831new.f_charbig = '####updated per update trigger####'; 11832END| 11833UPDATE t1 11834SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 11835f_charbig = '####updated per update statement itself####'; 11836 11837# check trigger-10 success: 1 11838DROP TRIGGER trg_2; 11839UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 11840f_int2 = CAST(f_char1 AS SIGNED INT), 11841f_charbig = CONCAT('===',f_char1,'==='); 11842CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11843BEGIN 11844SET new.f_int1 = @my_max1 + @counter, 11845new.f_int2 = @my_min2 - @counter, 11846new.f_charbig = '####updated per insert trigger####'; 11847SET @counter = @counter + 1; 11848END| 11849SET @counter = 1; 11850SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11851INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11852SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11853CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11854WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11855ORDER BY f_int1; 11856DROP TRIGGER trg_3; 11857 11858# check trigger-11 success: 1 11859DELETE FROM t1 11860WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11861AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11862AND f_charbig = '####updated per insert trigger####'; 11863CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 11864BEGIN 11865SET new.f_int1 = @my_max1 + @counter, 11866new.f_int2 = @my_min2 - @counter, 11867new.f_charbig = '####updated per insert trigger####'; 11868SET @counter = @counter + 1; 11869END| 11870SET @counter = 1; 11871SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 11872INSERT INTO t1 (f_char1, f_char2, f_charbig) 11873SELECT CAST(f_int1 AS CHAR), 11874CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 11875WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 11876ORDER BY f_int1; 11877DROP TRIGGER trg_3; 11878 11879# check trigger-12 success: 1 11880DELETE FROM t1 11881WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 11882AND f_int2 <> CAST(f_char1 AS SIGNED INT) 11883AND f_charbig = '####updated per insert trigger####'; 11884ANALYZE TABLE t1; 11885Table Op Msg_type Msg_text 11886test.t1 analyze status OK 11887CHECK TABLE t1 EXTENDED; 11888Table Op Msg_type Msg_text 11889test.t1 check status OK 11890CHECKSUM TABLE t1 EXTENDED; 11891Table Checksum 11892test.t1 <some_value> 11893OPTIMIZE TABLE t1; 11894Table Op Msg_type Msg_text 11895test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 11896test.t1 optimize status OK 11897# check layout success: 1 11898REPAIR TABLE t1 EXTENDED; 11899Table Op Msg_type Msg_text 11900test.t1 repair status OK 11901# check layout success: 1 11902TRUNCATE t1; 11903 11904# check TRUNCATE success: 1 11905# check layout success: 1 11906# End usability test (inc/partition_check.inc) 11907DROP TABLE t1; 11908# 1.1.3 UNIQUE INDEX exists 11909DROP TABLE IF EXISTS t1; 11910CREATE TABLE t1 ( 11911f_int1 INTEGER, 11912f_int2 INTEGER, 11913f_char1 CHAR(20), 11914f_char2 CHAR(20), 11915f_charbig VARCHAR(1000) 11916, UNIQUE INDEX uidx1 (f_int1,f_int2) 11917) 11918PARTITION BY HASH(f_int1) PARTITIONS 2; 11919INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11920SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11921WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 11922ALTER TABLE t1 MODIFY f_int2 BIGINT; 11923INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 11924SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 11925WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 11926# Start usability test (inc/partition_check.inc) 11927create_command 11928SHOW CREATE TABLE t1; 11929Table Create Table 11930t1 CREATE TABLE `t1` ( 11931 `f_int1` int(11) DEFAULT NULL, 11932 `f_int2` bigint(20) DEFAULT NULL, 11933 `f_char1` char(20) DEFAULT NULL, 11934 `f_char2` char(20) DEFAULT NULL, 11935 `f_charbig` varchar(1000) DEFAULT NULL, 11936 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 11937) ENGINE=TokuDB DEFAULT CHARSET=latin1 11938/*!50100 PARTITION BY HASH (f_int1) 11939PARTITIONS 2 */ 11940 11941# check prerequisites-1 success: 1 11942# check COUNT(*) success: 1 11943# check MIN/MAX(f_int1) success: 1 11944# check MIN/MAX(f_int2) success: 1 11945INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11946SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 11947CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 11948WHERE f_int1 IN (2,3); 11949ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 11950# check prerequisites-3 success: 1 11951# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 11952INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11953SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11954CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11955WHERE f_int1 IN (2,3); 11956DELETE FROM t1 WHERE f_charbig = 'delete me'; 11957INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 11958SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 11959CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 11960WHERE f_int1 IN (2,3); 11961DELETE FROM t1 WHERE f_charbig = 'delete me'; 11962# check read via f_int1 success: 1 11963# check read via f_int2 success: 1 11964 11965# check multiple-1 success: 1 11966DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 11967 11968# check multiple-2 success: 1 11969INSERT INTO t1 SELECT * FROM t0_template 11970WHERE MOD(f_int1,3) = 0; 11971 11972# check multiple-3 success: 1 11973UPDATE t1 SET f_int1 = f_int1 + @max_row 11974WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 11975AND @max_row_div2 + @max_row_div4; 11976 11977# check multiple-4 success: 1 11978DELETE FROM t1 11979WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 11980AND @max_row_div2 + @max_row_div4 + @max_row; 11981 11982# check multiple-5 success: 1 11983SELECT COUNT(*) INTO @try_count FROM t0_template 11984WHERE MOD(f_int1,3) = 0 11985AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11986SELECT COUNT(*) INTO @clash_count 11987FROM t1 INNER JOIN t0_template USING(f_int1) 11988WHERE MOD(f_int1,3) = 0 11989AND f_int1 BETWEEN @max_row_div2 AND @max_row; 11990SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 11991INSERT INTO t1 11992SET f_int1 = @cur_value , f_int2 = @cur_value, 11993f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 11994f_charbig = '#SINGLE#'; 11995 11996# check single-1 success: 1 11997SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 11998INSERT INTO t1 11999SET f_int1 = @cur_value , f_int2 = @cur_value, 12000f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12001f_charbig = '#SINGLE#'; 12002 12003# check single-2 success: 1 12004SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12005SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12006UPDATE t1 SET f_int1 = @cur_value2 12007WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12008 12009# check single-3 success: 1 12010SET @cur_value1= -1; 12011SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12012UPDATE t1 SET f_int1 = @cur_value1 12013WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12014 12015# check single-4 success: 1 12016SELECT MAX(f_int1) INTO @cur_value FROM t1; 12017DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12018 12019# check single-5 success: 1 12020DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12021 12022# check single-6 success: 1 12023INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12024 12025# check single-7 success: 1 12026DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12027DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12028INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12029f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12030f_charbig = '#NULL#'; 12031INSERT INTO t1 12032SET f_int1 = NULL , f_int2 = -@max_row, 12033f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12034f_charbig = '#NULL#'; 12035# check null success: 1 12036 12037# check null-1 success: 1 12038UPDATE t1 SET f_int1 = -@max_row 12039WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12040AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12041 12042# check null-2 success: 1 12043UPDATE t1 SET f_int1 = NULL 12044WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12045AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12046 12047# check null-3 success: 1 12048DELETE FROM t1 12049WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12050AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12051 12052# check null-4 success: 1 12053DELETE FROM t1 12054WHERE f_int1 = 0 AND f_int2 = 0 12055AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12056AND f_charbig = '#NULL#'; 12057INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12058SELECT f_int1, f_int1, '', '', 'was inserted' 12059 FROM t0_template source_tab 12060WHERE MOD(f_int1,3) = 0 12061AND f_int1 BETWEEN @max_row_div2 AND @max_row 12062ON DUPLICATE KEY 12063UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12064f_int2 = 2 * @max_row + source_tab.f_int1, 12065f_charbig = 'was updated'; 12066 12067# check unique-1-a success: 1 12068 12069# check unique-1-b success: 1 12070DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12071UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12072f_int2 = CAST(f_char1 AS SIGNED INT), 12073f_charbig = CONCAT('===',f_char1,'===') 12074WHERE f_charbig = 'was updated'; 12075REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12076SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12077 FROM t0_template source_tab 12078WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12079 12080# check replace success: 1 12081DELETE FROM t1 12082WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12083DELETE FROM t1 12084WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12085f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12086UPDATE t1 SET f_int2 = f_int1, 12087f_char1 = CAST(f_int1 AS CHAR), 12088f_char2 = CAST(f_int1 AS CHAR), 12089f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12090WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12091SET AUTOCOMMIT= 0; 12092INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12093SELECT f_int1, f_int1, '', '', 'was inserted' 12094FROM t0_template source_tab 12095WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12096 12097# check transactions-1 success: 1 12098COMMIT WORK; 12099 12100# check transactions-2 success: 1 12101ROLLBACK WORK; 12102 12103# check transactions-3 success: 1 12104DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12105COMMIT WORK; 12106ROLLBACK WORK; 12107 12108# check transactions-4 success: 1 12109INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12110SELECT f_int1, f_int1, '', '', 'was inserted' 12111FROM t0_template source_tab 12112WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12113 12114# check transactions-5 success: 1 12115ROLLBACK WORK; 12116 12117# check transactions-6 success: 1 12118# INFO: Storage engine used for t1 seems to be transactional. 12119COMMIT; 12120 12121# check transactions-7 success: 1 12122DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12123COMMIT WORK; 12124SET @@session.sql_mode = 'traditional'; 12125Warnings: 12126Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12127SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12129SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12130'', '', 'was inserted' FROM t0_template 12131WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12132ERROR 22012: Division by 0 12133COMMIT; 12134 12135# check transactions-8 success: 1 12136# INFO: Storage engine used for t1 seems to be able to revert 12137# changes made by the failing statement. 12138SET @@session.sql_mode = ''; 12139Warnings: 12140Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12141SET AUTOCOMMIT= 1; 12142DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12143COMMIT WORK; 12144UPDATE t1 SET f_charbig = REPEAT('b', 1000); 12145 12146# check special-1 success: 1 12147UPDATE t1 SET f_charbig = ''; 12148 12149# check special-2 success: 1 12150UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 12151INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12152SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 12153WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12154INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12155SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12156'just inserted' FROM t0_template 12157WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12158CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 12159BEGIN 12160UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12161f_charbig = 'updated by trigger' 12162 WHERE f_int1 = new.f_int1; 12163END| 12164INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12165SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12166WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12167 12168# check trigger-1 success: 1 12169DROP TRIGGER trg_1; 12170UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12171f_int2 = CAST(f_char1 AS SIGNED INT), 12172f_charbig = 'just inserted' 12173 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12174DELETE FROM t0_aux 12175WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12176INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12177SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12178'just inserted' FROM t0_template 12179WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12180CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 12181BEGIN 12182UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12183f_charbig = 'updated by trigger' 12184 WHERE f_int1 = new.f_int1; 12185END| 12186INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12187SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12188WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12189 12190# check trigger-2 success: 1 12191DROP TRIGGER trg_1; 12192UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12193f_int2 = CAST(f_char1 AS SIGNED INT), 12194f_charbig = 'just inserted' 12195 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12196DELETE FROM t0_aux 12197WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12198INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12199SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12200'just inserted' FROM t0_template 12201WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12202CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12203BEGIN 12204UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12205f_charbig = 'updated by trigger' 12206 WHERE f_int1 = new.f_int1; 12207END| 12208UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12209WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12210 12211# check trigger-3 success: 1 12212DROP TRIGGER trg_1; 12213UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12214f_int2 = CAST(f_char1 AS SIGNED INT), 12215f_charbig = 'just inserted' 12216 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12217DELETE FROM t0_aux 12218WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12219INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12220SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12221'just inserted' FROM t0_template 12222WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12223CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12224BEGIN 12225UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12226f_charbig = 'updated by trigger' 12227 WHERE f_int1 = - old.f_int1; 12228END| 12229UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12230WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12231 12232# check trigger-4 success: 1 12233DROP TRIGGER trg_1; 12234UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12235f_int2 = CAST(f_char1 AS SIGNED INT), 12236f_charbig = 'just inserted' 12237 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12238DELETE FROM t0_aux 12239WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12240INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12241SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12242'just inserted' FROM t0_template 12243WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12244CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12245BEGIN 12246UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12247f_charbig = 'updated by trigger' 12248 WHERE f_int1 = new.f_int1; 12249END| 12250UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12251WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12252 12253# check trigger-5 success: 1 12254DROP TRIGGER trg_1; 12255UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12256f_int2 = CAST(f_char1 AS SIGNED INT), 12257f_charbig = 'just inserted' 12258 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12259DELETE FROM t0_aux 12260WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12261INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12262SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12263'just inserted' FROM t0_template 12264WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12265CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12266BEGIN 12267UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12268f_charbig = 'updated by trigger' 12269 WHERE f_int1 = - old.f_int1; 12270END| 12271UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12272WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12273 12274# check trigger-6 success: 1 12275DROP TRIGGER trg_1; 12276UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12277f_int2 = CAST(f_char1 AS SIGNED INT), 12278f_charbig = 'just inserted' 12279 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12280DELETE FROM t0_aux 12281WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12282INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12283SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12284'just inserted' FROM t0_template 12285WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12286CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12287BEGIN 12288UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12289f_charbig = 'updated by trigger' 12290 WHERE f_int1 = - old.f_int1; 12291END| 12292DELETE FROM t0_aux 12293WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12294 12295# check trigger-7 success: 1 12296DROP TRIGGER trg_1; 12297UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12298f_int2 = CAST(f_char1 AS SIGNED INT), 12299f_charbig = 'just inserted' 12300 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12301DELETE FROM t0_aux 12302WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12303INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12304SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12305'just inserted' FROM t0_template 12306WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12307CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12308BEGIN 12309UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12310f_charbig = 'updated by trigger' 12311 WHERE f_int1 = - old.f_int1; 12312END| 12313DELETE FROM t0_aux 12314WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12315 12316# check trigger-8 success: 1 12317DROP TRIGGER trg_1; 12318UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12319f_int2 = CAST(f_char1 AS SIGNED INT), 12320f_charbig = 'just inserted' 12321 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12322DELETE FROM t0_aux 12323WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12324DELETE FROM t1 12325WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12326CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12327BEGIN 12328SET new.f_int1 = old.f_int1 + @max_row, 12329new.f_int2 = old.f_int2 - @max_row, 12330new.f_charbig = '####updated per update trigger####'; 12331END| 12332UPDATE t1 12333SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12334f_charbig = '####updated per update statement itself####'; 12335 12336# check trigger-9 success: 1 12337DROP TRIGGER trg_2; 12338UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12339f_int2 = CAST(f_char1 AS SIGNED INT), 12340f_charbig = CONCAT('===',f_char1,'==='); 12341CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12342BEGIN 12343SET new.f_int1 = new.f_int1 + @max_row, 12344new.f_int2 = new.f_int2 - @max_row, 12345new.f_charbig = '####updated per update trigger####'; 12346END| 12347UPDATE t1 12348SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12349f_charbig = '####updated per update statement itself####'; 12350 12351# check trigger-10 success: 1 12352DROP TRIGGER trg_2; 12353UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12354f_int2 = CAST(f_char1 AS SIGNED INT), 12355f_charbig = CONCAT('===',f_char1,'==='); 12356CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12357BEGIN 12358SET new.f_int1 = @my_max1 + @counter, 12359new.f_int2 = @my_min2 - @counter, 12360new.f_charbig = '####updated per insert trigger####'; 12361SET @counter = @counter + 1; 12362END| 12363SET @counter = 1; 12364SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12365INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12366SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12367CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12369ORDER BY f_int1; 12370DROP TRIGGER trg_3; 12371 12372# check trigger-11 success: 1 12373DELETE FROM t1 12374WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12375AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12376AND f_charbig = '####updated per insert trigger####'; 12377CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12378BEGIN 12379SET new.f_int1 = @my_max1 + @counter, 12380new.f_int2 = @my_min2 - @counter, 12381new.f_charbig = '####updated per insert trigger####'; 12382SET @counter = @counter + 1; 12383END| 12384SET @counter = 1; 12385SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12386INSERT INTO t1 (f_char1, f_char2, f_charbig) 12387SELECT CAST(f_int1 AS CHAR), 12388CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12389WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12390ORDER BY f_int1; 12391DROP TRIGGER trg_3; 12392 12393# check trigger-12 success: 1 12394DELETE FROM t1 12395WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12396AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12397AND f_charbig = '####updated per insert trigger####'; 12398ANALYZE TABLE t1; 12399Table Op Msg_type Msg_text 12400test.t1 analyze status OK 12401CHECK TABLE t1 EXTENDED; 12402Table Op Msg_type Msg_text 12403test.t1 check status OK 12404CHECKSUM TABLE t1 EXTENDED; 12405Table Checksum 12406test.t1 <some_value> 12407OPTIMIZE TABLE t1; 12408Table Op Msg_type Msg_text 12409test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 12410test.t1 optimize status OK 12411# check layout success: 1 12412REPAIR TABLE t1 EXTENDED; 12413Table Op Msg_type Msg_text 12414test.t1 repair status OK 12415# check layout success: 1 12416TRUNCATE t1; 12417 12418# check TRUNCATE success: 1 12419# check layout success: 1 12420# End usability test (inc/partition_check.inc) 12421DROP TABLE t1; 12422CREATE TABLE t1 ( 12423f_int1 INTEGER, 12424f_int2 INTEGER, 12425f_char1 CHAR(20), 12426f_char2 CHAR(20), 12427f_charbig VARCHAR(1000) 12428, UNIQUE INDEX uidx1 (f_int1,f_int2) 12429) 12430PARTITION BY KEY(f_int1) PARTITIONS 5; 12431INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12432SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12433WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 12434ALTER TABLE t1 MODIFY f_int2 BIGINT; 12435INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12436SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12437WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 12438# Start usability test (inc/partition_check.inc) 12439create_command 12440SHOW CREATE TABLE t1; 12441Table Create Table 12442t1 CREATE TABLE `t1` ( 12443 `f_int1` int(11) DEFAULT NULL, 12444 `f_int2` bigint(20) DEFAULT NULL, 12445 `f_char1` char(20) DEFAULT NULL, 12446 `f_char2` char(20) DEFAULT NULL, 12447 `f_charbig` varchar(1000) DEFAULT NULL, 12448 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 12449) ENGINE=TokuDB DEFAULT CHARSET=latin1 12450/*!50100 PARTITION BY KEY (f_int1) 12451PARTITIONS 5 */ 12452 12453# check prerequisites-1 success: 1 12454# check COUNT(*) success: 1 12455# check MIN/MAX(f_int1) success: 1 12456# check MIN/MAX(f_int2) success: 1 12457INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12458SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12459CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12460WHERE f_int1 IN (2,3); 12461ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 12462# check prerequisites-3 success: 1 12463# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12464INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12465SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12466CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12467WHERE f_int1 IN (2,3); 12468DELETE FROM t1 WHERE f_charbig = 'delete me'; 12469INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12470SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12471CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12472WHERE f_int1 IN (2,3); 12473DELETE FROM t1 WHERE f_charbig = 'delete me'; 12474# check read via f_int1 success: 1 12475# check read via f_int2 success: 1 12476 12477# check multiple-1 success: 1 12478DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 12479 12480# check multiple-2 success: 1 12481INSERT INTO t1 SELECT * FROM t0_template 12482WHERE MOD(f_int1,3) = 0; 12483 12484# check multiple-3 success: 1 12485UPDATE t1 SET f_int1 = f_int1 + @max_row 12486WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 12487AND @max_row_div2 + @max_row_div4; 12488 12489# check multiple-4 success: 1 12490DELETE FROM t1 12491WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 12492AND @max_row_div2 + @max_row_div4 + @max_row; 12493 12494# check multiple-5 success: 1 12495SELECT COUNT(*) INTO @try_count FROM t0_template 12496WHERE MOD(f_int1,3) = 0 12497AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12498SELECT COUNT(*) INTO @clash_count 12499FROM t1 INNER JOIN t0_template USING(f_int1) 12500WHERE MOD(f_int1,3) = 0 12501AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12502SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 12503INSERT INTO t1 12504SET f_int1 = @cur_value , f_int2 = @cur_value, 12505f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12506f_charbig = '#SINGLE#'; 12507 12508# check single-1 success: 1 12509SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 12510INSERT INTO t1 12511SET f_int1 = @cur_value , f_int2 = @cur_value, 12512f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 12513f_charbig = '#SINGLE#'; 12514 12515# check single-2 success: 1 12516SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 12517SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 12518UPDATE t1 SET f_int1 = @cur_value2 12519WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 12520 12521# check single-3 success: 1 12522SET @cur_value1= -1; 12523SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 12524UPDATE t1 SET f_int1 = @cur_value1 12525WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 12526 12527# check single-4 success: 1 12528SELECT MAX(f_int1) INTO @cur_value FROM t1; 12529DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 12530 12531# check single-5 success: 1 12532DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 12533 12534# check single-6 success: 1 12535INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 12536 12537# check single-7 success: 1 12538DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 12539DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 12540INSERT t1 SET f_int1 = 0 , f_int2 = 0, 12541f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 12542f_charbig = '#NULL#'; 12543INSERT INTO t1 12544SET f_int1 = NULL , f_int2 = -@max_row, 12545f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 12546f_charbig = '#NULL#'; 12547# check null success: 1 12548 12549# check null-1 success: 1 12550UPDATE t1 SET f_int1 = -@max_row 12551WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12552AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12553 12554# check null-2 success: 1 12555UPDATE t1 SET f_int1 = NULL 12556WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12557AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12558 12559# check null-3 success: 1 12560DELETE FROM t1 12561WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 12562AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 12563 12564# check null-4 success: 1 12565DELETE FROM t1 12566WHERE f_int1 = 0 AND f_int2 = 0 12567AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 12568AND f_charbig = '#NULL#'; 12569INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12570SELECT f_int1, f_int1, '', '', 'was inserted' 12571 FROM t0_template source_tab 12572WHERE MOD(f_int1,3) = 0 12573AND f_int1 BETWEEN @max_row_div2 AND @max_row 12574ON DUPLICATE KEY 12575UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 12576f_int2 = 2 * @max_row + source_tab.f_int1, 12577f_charbig = 'was updated'; 12578 12579# check unique-1-a success: 1 12580 12581# check unique-1-b success: 1 12582DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12583UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12584f_int2 = CAST(f_char1 AS SIGNED INT), 12585f_charbig = CONCAT('===',f_char1,'===') 12586WHERE f_charbig = 'was updated'; 12587REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12588SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 12589 FROM t0_template source_tab 12590WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 12591 12592# check replace success: 1 12593DELETE FROM t1 12594WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 12595DELETE FROM t1 12596WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 12597f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 12598UPDATE t1 SET f_int2 = f_int1, 12599f_char1 = CAST(f_int1 AS CHAR), 12600f_char2 = CAST(f_int1 AS CHAR), 12601f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 12602WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 12603SET AUTOCOMMIT= 0; 12604INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12605SELECT f_int1, f_int1, '', '', 'was inserted' 12606FROM t0_template source_tab 12607WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12608 12609# check transactions-1 success: 1 12610COMMIT WORK; 12611 12612# check transactions-2 success: 1 12613ROLLBACK WORK; 12614 12615# check transactions-3 success: 1 12616DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12617COMMIT WORK; 12618ROLLBACK WORK; 12619 12620# check transactions-4 success: 1 12621INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12622SELECT f_int1, f_int1, '', '', 'was inserted' 12623FROM t0_template source_tab 12624WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12625 12626# check transactions-5 success: 1 12627ROLLBACK WORK; 12628 12629# check transactions-6 success: 1 12630# INFO: Storage engine used for t1 seems to be transactional. 12631COMMIT; 12632 12633# check transactions-7 success: 1 12634DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12635COMMIT WORK; 12636SET @@session.sql_mode = 'traditional'; 12637Warnings: 12638Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12639SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 12640INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12641SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 12642'', '', 'was inserted' FROM t0_template 12643WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 12644ERROR 22012: Division by 0 12645COMMIT; 12646 12647# check transactions-8 success: 1 12648# INFO: Storage engine used for t1 seems to be able to revert 12649# changes made by the failing statement. 12650SET @@session.sql_mode = ''; 12651Warnings: 12652Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 12653SET AUTOCOMMIT= 1; 12654DELETE FROM t1 WHERE f_charbig = 'was inserted'; 12655COMMIT WORK; 12656UPDATE t1 SET f_charbig = REPEAT('b', 1000); 12657 12658# check special-1 success: 1 12659UPDATE t1 SET f_charbig = ''; 12660 12661# check special-2 success: 1 12662UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 12663INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12664SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 12665WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12666INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12667SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12668'just inserted' FROM t0_template 12669WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12670CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 12671BEGIN 12672UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12673f_charbig = 'updated by trigger' 12674 WHERE f_int1 = new.f_int1; 12675END| 12676INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12677SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12678WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12679 12680# check trigger-1 success: 1 12681DROP TRIGGER trg_1; 12682UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12683f_int2 = CAST(f_char1 AS SIGNED INT), 12684f_charbig = 'just inserted' 12685 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12686DELETE FROM t0_aux 12687WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12688INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12689SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12690'just inserted' FROM t0_template 12691WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12692CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 12693BEGIN 12694UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12695f_charbig = 'updated by trigger' 12696 WHERE f_int1 = new.f_int1; 12697END| 12698INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12699SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 12700WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12701 12702# check trigger-2 success: 1 12703DROP TRIGGER trg_1; 12704UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12705f_int2 = CAST(f_char1 AS SIGNED INT), 12706f_charbig = 'just inserted' 12707 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12708DELETE FROM t0_aux 12709WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12710INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12711SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12712'just inserted' FROM t0_template 12713WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12714CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12715BEGIN 12716UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12717f_charbig = 'updated by trigger' 12718 WHERE f_int1 = new.f_int1; 12719END| 12720UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12721WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12722 12723# check trigger-3 success: 1 12724DROP TRIGGER trg_1; 12725UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12726f_int2 = CAST(f_char1 AS SIGNED INT), 12727f_charbig = 'just inserted' 12728 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12729DELETE FROM t0_aux 12730WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12731INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12732SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12733'just inserted' FROM t0_template 12734WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12735CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 12736BEGIN 12737UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12738f_charbig = 'updated by trigger' 12739 WHERE f_int1 = - old.f_int1; 12740END| 12741UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12742WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12743 12744# check trigger-4 success: 1 12745DROP TRIGGER trg_1; 12746UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12747f_int2 = CAST(f_char1 AS SIGNED INT), 12748f_charbig = 'just inserted' 12749 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12750DELETE FROM t0_aux 12751WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12752INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12753SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12754'just inserted' FROM t0_template 12755WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12756CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12757BEGIN 12758UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12759f_charbig = 'updated by trigger' 12760 WHERE f_int1 = new.f_int1; 12761END| 12762UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12763WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12764 12765# check trigger-5 success: 1 12766DROP TRIGGER trg_1; 12767UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12768f_int2 = CAST(f_char1 AS SIGNED INT), 12769f_charbig = 'just inserted' 12770 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12771DELETE FROM t0_aux 12772WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12773INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12774SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12775'just inserted' FROM t0_template 12776WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12777CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 12778BEGIN 12779UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12780f_charbig = 'updated by trigger' 12781 WHERE f_int1 = - old.f_int1; 12782END| 12783UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 12784WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12785 12786# check trigger-6 success: 1 12787DROP TRIGGER trg_1; 12788UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12789f_int2 = CAST(f_char1 AS SIGNED INT), 12790f_charbig = 'just inserted' 12791 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12792DELETE FROM t0_aux 12793WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12794INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12795SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12796'just inserted' FROM t0_template 12797WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12798CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 12799BEGIN 12800UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12801f_charbig = 'updated by trigger' 12802 WHERE f_int1 = - old.f_int1; 12803END| 12804DELETE FROM t0_aux 12805WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12806 12807# check trigger-7 success: 1 12808DROP TRIGGER trg_1; 12809UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12810f_int2 = CAST(f_char1 AS SIGNED INT), 12811f_charbig = 'just inserted' 12812 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12813DELETE FROM t0_aux 12814WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12815INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 12816SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 12817'just inserted' FROM t0_template 12818WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12819CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 12820BEGIN 12821UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 12822f_charbig = 'updated by trigger' 12823 WHERE f_int1 = - old.f_int1; 12824END| 12825DELETE FROM t0_aux 12826WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 12827 12828# check trigger-8 success: 1 12829DROP TRIGGER trg_1; 12830UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12831f_int2 = CAST(f_char1 AS SIGNED INT), 12832f_charbig = 'just inserted' 12833 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 12834DELETE FROM t0_aux 12835WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12836DELETE FROM t1 12837WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 12838CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12839BEGIN 12840SET new.f_int1 = old.f_int1 + @max_row, 12841new.f_int2 = old.f_int2 - @max_row, 12842new.f_charbig = '####updated per update trigger####'; 12843END| 12844UPDATE t1 12845SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12846f_charbig = '####updated per update statement itself####'; 12847 12848# check trigger-9 success: 1 12849DROP TRIGGER trg_2; 12850UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12851f_int2 = CAST(f_char1 AS SIGNED INT), 12852f_charbig = CONCAT('===',f_char1,'==='); 12853CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 12854BEGIN 12855SET new.f_int1 = new.f_int1 + @max_row, 12856new.f_int2 = new.f_int2 - @max_row, 12857new.f_charbig = '####updated per update trigger####'; 12858END| 12859UPDATE t1 12860SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 12861f_charbig = '####updated per update statement itself####'; 12862 12863# check trigger-10 success: 1 12864DROP TRIGGER trg_2; 12865UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 12866f_int2 = CAST(f_char1 AS SIGNED INT), 12867f_charbig = CONCAT('===',f_char1,'==='); 12868CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12869BEGIN 12870SET new.f_int1 = @my_max1 + @counter, 12871new.f_int2 = @my_min2 - @counter, 12872new.f_charbig = '####updated per insert trigger####'; 12873SET @counter = @counter + 1; 12874END| 12875SET @counter = 1; 12876SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12877INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12878SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12879CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12880WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12881ORDER BY f_int1; 12882DROP TRIGGER trg_3; 12883 12884# check trigger-11 success: 1 12885DELETE FROM t1 12886WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12887AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12888AND f_charbig = '####updated per insert trigger####'; 12889CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 12890BEGIN 12891SET new.f_int1 = @my_max1 + @counter, 12892new.f_int2 = @my_min2 - @counter, 12893new.f_charbig = '####updated per insert trigger####'; 12894SET @counter = @counter + 1; 12895END| 12896SET @counter = 1; 12897SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 12898INSERT INTO t1 (f_char1, f_char2, f_charbig) 12899SELECT CAST(f_int1 AS CHAR), 12900CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 12901WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 12902ORDER BY f_int1; 12903DROP TRIGGER trg_3; 12904 12905# check trigger-12 success: 1 12906DELETE FROM t1 12907WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 12908AND f_int2 <> CAST(f_char1 AS SIGNED INT) 12909AND f_charbig = '####updated per insert trigger####'; 12910ANALYZE TABLE t1; 12911Table Op Msg_type Msg_text 12912test.t1 analyze status OK 12913CHECK TABLE t1 EXTENDED; 12914Table Op Msg_type Msg_text 12915test.t1 check status OK 12916CHECKSUM TABLE t1 EXTENDED; 12917Table Checksum 12918test.t1 <some_value> 12919OPTIMIZE TABLE t1; 12920Table Op Msg_type Msg_text 12921test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 12922test.t1 optimize status OK 12923# check layout success: 1 12924REPAIR TABLE t1 EXTENDED; 12925Table Op Msg_type Msg_text 12926test.t1 repair status OK 12927# check layout success: 1 12928TRUNCATE t1; 12929 12930# check TRUNCATE success: 1 12931# check layout success: 1 12932# End usability test (inc/partition_check.inc) 12933DROP TABLE t1; 12934CREATE TABLE t1 ( 12935f_int1 INTEGER, 12936f_int2 INTEGER, 12937f_char1 CHAR(20), 12938f_char2 CHAR(20), 12939f_charbig VARCHAR(1000) 12940, UNIQUE INDEX uidx1 (f_int1,f_int2) 12941) 12942PARTITION BY LIST(MOD(f_int1,4)) 12943(PARTITION part_3 VALUES IN (-3), 12944PARTITION part_2 VALUES IN (-2), 12945PARTITION part_1 VALUES IN (-1), 12946PARTITION part_N VALUES IN (NULL), 12947PARTITION part0 VALUES IN (0), 12948PARTITION part1 VALUES IN (1), 12949PARTITION part2 VALUES IN (2), 12950PARTITION part3 VALUES IN (3)); 12951INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12952SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12953WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 12954ALTER TABLE t1 MODIFY f_int2 BIGINT; 12955INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 12956SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 12957WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 12958# Start usability test (inc/partition_check.inc) 12959create_command 12960SHOW CREATE TABLE t1; 12961Table Create Table 12962t1 CREATE TABLE `t1` ( 12963 `f_int1` int(11) DEFAULT NULL, 12964 `f_int2` bigint(20) DEFAULT NULL, 12965 `f_char1` char(20) DEFAULT NULL, 12966 `f_char2` char(20) DEFAULT NULL, 12967 `f_charbig` varchar(1000) DEFAULT NULL, 12968 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 12969) ENGINE=TokuDB DEFAULT CHARSET=latin1 12970/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 12971(PARTITION part_3 VALUES IN (-3) ENGINE = TokuDB, 12972 PARTITION part_2 VALUES IN (-2) ENGINE = TokuDB, 12973 PARTITION part_1 VALUES IN (-1) ENGINE = TokuDB, 12974 PARTITION part_N VALUES IN (NULL) ENGINE = TokuDB, 12975 PARTITION part0 VALUES IN (0) ENGINE = TokuDB, 12976 PARTITION part1 VALUES IN (1) ENGINE = TokuDB, 12977 PARTITION part2 VALUES IN (2) ENGINE = TokuDB, 12978 PARTITION part3 VALUES IN (3) ENGINE = TokuDB) */ 12979 12980# check prerequisites-1 success: 1 12981# check COUNT(*) success: 1 12982# check MIN/MAX(f_int1) success: 1 12983# check MIN/MAX(f_int2) success: 1 12984INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12985SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 12986CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 12987WHERE f_int1 IN (2,3); 12988ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 12989# check prerequisites-3 success: 1 12990# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 12991INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12992SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12993CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12994WHERE f_int1 IN (2,3); 12995DELETE FROM t1 WHERE f_charbig = 'delete me'; 12996INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 12997SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 12998CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 12999WHERE f_int1 IN (2,3); 13000DELETE FROM t1 WHERE f_charbig = 'delete me'; 13001# check read via f_int1 success: 1 13002# check read via f_int2 success: 1 13003 13004# check multiple-1 success: 1 13005DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13006 13007# check multiple-2 success: 1 13008INSERT INTO t1 SELECT * FROM t0_template 13009WHERE MOD(f_int1,3) = 0; 13010 13011# check multiple-3 success: 1 13012UPDATE t1 SET f_int1 = f_int1 + @max_row 13013WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13014AND @max_row_div2 + @max_row_div4; 13015 13016# check multiple-4 success: 1 13017DELETE FROM t1 13018WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13019AND @max_row_div2 + @max_row_div4 + @max_row; 13020 13021# check multiple-5 success: 1 13022SELECT COUNT(*) INTO @try_count FROM t0_template 13023WHERE MOD(f_int1,3) = 0 13024AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13025SELECT COUNT(*) INTO @clash_count 13026FROM t1 INNER JOIN t0_template USING(f_int1) 13027WHERE MOD(f_int1,3) = 0 13028AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13029SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13030INSERT INTO t1 13031SET f_int1 = @cur_value , f_int2 = @cur_value, 13032f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13033f_charbig = '#SINGLE#'; 13034 13035# check single-1 success: 1 13036SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13037INSERT INTO t1 13038SET f_int1 = @cur_value , f_int2 = @cur_value, 13039f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13040f_charbig = '#SINGLE#'; 13041 13042# check single-2 success: 1 13043SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13044SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13045UPDATE t1 SET f_int1 = @cur_value2 13046WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13047 13048# check single-3 success: 1 13049SET @cur_value1= -1; 13050SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13051UPDATE t1 SET f_int1 = @cur_value1 13052WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13053 13054# check single-4 success: 1 13055SELECT MAX(f_int1) INTO @cur_value FROM t1; 13056DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13057 13058# check single-5 success: 1 13059DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13060 13061# check single-6 success: 1 13062INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13063 13064# check single-7 success: 1 13065DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 13066DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13067INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13068f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13069f_charbig = '#NULL#'; 13070INSERT INTO t1 13071SET f_int1 = NULL , f_int2 = -@max_row, 13072f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 13073f_charbig = '#NULL#'; 13074# check null success: 1 13075 13076# check null-1 success: 1 13077UPDATE t1 SET f_int1 = -@max_row 13078WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13079AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13080 13081# check null-2 success: 1 13082UPDATE t1 SET f_int1 = NULL 13083WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13084AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13085 13086# check null-3 success: 1 13087DELETE FROM t1 13088WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13089AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13090 13091# check null-4 success: 1 13092DELETE FROM t1 13093WHERE f_int1 = 0 AND f_int2 = 0 13094AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 13095AND f_charbig = '#NULL#'; 13096INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13097SELECT f_int1, f_int1, '', '', 'was inserted' 13098 FROM t0_template source_tab 13099WHERE MOD(f_int1,3) = 0 13100AND f_int1 BETWEEN @max_row_div2 AND @max_row 13101ON DUPLICATE KEY 13102UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 13103f_int2 = 2 * @max_row + source_tab.f_int1, 13104f_charbig = 'was updated'; 13105 13106# check unique-1-a success: 1 13107 13108# check unique-1-b success: 1 13109DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13110UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13111f_int2 = CAST(f_char1 AS SIGNED INT), 13112f_charbig = CONCAT('===',f_char1,'===') 13113WHERE f_charbig = 'was updated'; 13114REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13115SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 13116 FROM t0_template source_tab 13117WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13118 13119# check replace success: 1 13120DELETE FROM t1 13121WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 13122DELETE FROM t1 13123WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 13124f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 13125UPDATE t1 SET f_int2 = f_int1, 13126f_char1 = CAST(f_int1 AS CHAR), 13127f_char2 = CAST(f_int1 AS CHAR), 13128f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 13129WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 13130SET AUTOCOMMIT= 0; 13131INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13132SELECT f_int1, f_int1, '', '', 'was inserted' 13133FROM t0_template source_tab 13134WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13135 13136# check transactions-1 success: 1 13137COMMIT WORK; 13138 13139# check transactions-2 success: 1 13140ROLLBACK WORK; 13141 13142# check transactions-3 success: 1 13143DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13144COMMIT WORK; 13145ROLLBACK WORK; 13146 13147# check transactions-4 success: 1 13148INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13149SELECT f_int1, f_int1, '', '', 'was inserted' 13150FROM t0_template source_tab 13151WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13152 13153# check transactions-5 success: 1 13154ROLLBACK WORK; 13155 13156# check transactions-6 success: 1 13157# INFO: Storage engine used for t1 seems to be transactional. 13158COMMIT; 13159 13160# check transactions-7 success: 1 13161DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13162COMMIT WORK; 13163SET @@session.sql_mode = 'traditional'; 13164Warnings: 13165Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13166SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 13167INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13168SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 13169'', '', 'was inserted' FROM t0_template 13170WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13171ERROR 22012: Division by 0 13172COMMIT; 13173 13174# check transactions-8 success: 1 13175# INFO: Storage engine used for t1 seems to be able to revert 13176# changes made by the failing statement. 13177SET @@session.sql_mode = ''; 13178Warnings: 13179Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13180SET AUTOCOMMIT= 1; 13181DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13182COMMIT WORK; 13183UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13184 13185# check special-1 success: 1 13186UPDATE t1 SET f_charbig = ''; 13187 13188# check special-2 success: 1 13189UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13190INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13191SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13192WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13193INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13194SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13195'just inserted' FROM t0_template 13196WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13197CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13198BEGIN 13199UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13200f_charbig = 'updated by trigger' 13201 WHERE f_int1 = new.f_int1; 13202END| 13203INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13204SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13205WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13206 13207# check trigger-1 success: 1 13208DROP TRIGGER trg_1; 13209UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13210f_int2 = CAST(f_char1 AS SIGNED INT), 13211f_charbig = 'just inserted' 13212 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13213DELETE FROM t0_aux 13214WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13215INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13216SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13217'just inserted' FROM t0_template 13218WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13219CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13220BEGIN 13221UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13222f_charbig = 'updated by trigger' 13223 WHERE f_int1 = new.f_int1; 13224END| 13225INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13226SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13227WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13228 13229# check trigger-2 success: 1 13230DROP TRIGGER trg_1; 13231UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13232f_int2 = CAST(f_char1 AS SIGNED INT), 13233f_charbig = 'just inserted' 13234 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13235DELETE FROM t0_aux 13236WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13237INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13238SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13239'just inserted' FROM t0_template 13240WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13241CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13242BEGIN 13243UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13244f_charbig = 'updated by trigger' 13245 WHERE f_int1 = new.f_int1; 13246END| 13247UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13248WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13249 13250# check trigger-3 success: 1 13251DROP TRIGGER trg_1; 13252UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13253f_int2 = CAST(f_char1 AS SIGNED INT), 13254f_charbig = 'just inserted' 13255 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13256DELETE FROM t0_aux 13257WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13258INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13259SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13260'just inserted' FROM t0_template 13261WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13262CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13263BEGIN 13264UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13265f_charbig = 'updated by trigger' 13266 WHERE f_int1 = - old.f_int1; 13267END| 13268UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13269WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13270 13271# check trigger-4 success: 1 13272DROP TRIGGER trg_1; 13273UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13274f_int2 = CAST(f_char1 AS SIGNED INT), 13275f_charbig = 'just inserted' 13276 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13277DELETE FROM t0_aux 13278WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13279INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13280SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13281'just inserted' FROM t0_template 13282WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13283CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13284BEGIN 13285UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13286f_charbig = 'updated by trigger' 13287 WHERE f_int1 = new.f_int1; 13288END| 13289UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13290WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13291 13292# check trigger-5 success: 1 13293DROP TRIGGER trg_1; 13294UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13295f_int2 = CAST(f_char1 AS SIGNED INT), 13296f_charbig = 'just inserted' 13297 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13298DELETE FROM t0_aux 13299WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13300INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13301SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13302'just inserted' FROM t0_template 13303WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13304CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13305BEGIN 13306UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13307f_charbig = 'updated by trigger' 13308 WHERE f_int1 = - old.f_int1; 13309END| 13310UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13311WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13312 13313# check trigger-6 success: 1 13314DROP TRIGGER trg_1; 13315UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13316f_int2 = CAST(f_char1 AS SIGNED INT), 13317f_charbig = 'just inserted' 13318 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13319DELETE FROM t0_aux 13320WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13321INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13322SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13323'just inserted' FROM t0_template 13324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13325CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13326BEGIN 13327UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13328f_charbig = 'updated by trigger' 13329 WHERE f_int1 = - old.f_int1; 13330END| 13331DELETE FROM t0_aux 13332WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13333 13334# check trigger-7 success: 1 13335DROP TRIGGER trg_1; 13336UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13337f_int2 = CAST(f_char1 AS SIGNED INT), 13338f_charbig = 'just inserted' 13339 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13340DELETE FROM t0_aux 13341WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13342INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13343SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13344'just inserted' FROM t0_template 13345WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13346CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13347BEGIN 13348UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13349f_charbig = 'updated by trigger' 13350 WHERE f_int1 = - old.f_int1; 13351END| 13352DELETE FROM t0_aux 13353WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13354 13355# check trigger-8 success: 1 13356DROP TRIGGER trg_1; 13357UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13358f_int2 = CAST(f_char1 AS SIGNED INT), 13359f_charbig = 'just inserted' 13360 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13361DELETE FROM t0_aux 13362WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13363DELETE FROM t1 13364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13365CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13366BEGIN 13367SET new.f_int1 = old.f_int1 + @max_row, 13368new.f_int2 = old.f_int2 - @max_row, 13369new.f_charbig = '####updated per update trigger####'; 13370END| 13371UPDATE t1 13372SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13373f_charbig = '####updated per update statement itself####'; 13374 13375# check trigger-9 success: 1 13376DROP TRIGGER trg_2; 13377UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13378f_int2 = CAST(f_char1 AS SIGNED INT), 13379f_charbig = CONCAT('===',f_char1,'==='); 13380CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13381BEGIN 13382SET new.f_int1 = new.f_int1 + @max_row, 13383new.f_int2 = new.f_int2 - @max_row, 13384new.f_charbig = '####updated per update trigger####'; 13385END| 13386UPDATE t1 13387SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13388f_charbig = '####updated per update statement itself####'; 13389 13390# check trigger-10 success: 1 13391DROP TRIGGER trg_2; 13392UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13393f_int2 = CAST(f_char1 AS SIGNED INT), 13394f_charbig = CONCAT('===',f_char1,'==='); 13395CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13396BEGIN 13397SET new.f_int1 = @my_max1 + @counter, 13398new.f_int2 = @my_min2 - @counter, 13399new.f_charbig = '####updated per insert trigger####'; 13400SET @counter = @counter + 1; 13401END| 13402SET @counter = 1; 13403SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13404INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13405SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13406CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13408ORDER BY f_int1; 13409DROP TRIGGER trg_3; 13410 13411# check trigger-11 success: 1 13412DELETE FROM t1 13413WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13414AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13415AND f_charbig = '####updated per insert trigger####'; 13416CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13417BEGIN 13418SET new.f_int1 = @my_max1 + @counter, 13419new.f_int2 = @my_min2 - @counter, 13420new.f_charbig = '####updated per insert trigger####'; 13421SET @counter = @counter + 1; 13422END| 13423SET @counter = 1; 13424SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13425INSERT INTO t1 (f_char1, f_char2, f_charbig) 13426SELECT CAST(f_int1 AS CHAR), 13427CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13429ORDER BY f_int1; 13430DROP TRIGGER trg_3; 13431 13432# check trigger-12 success: 1 13433DELETE FROM t1 13434WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13435AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13436AND f_charbig = '####updated per insert trigger####'; 13437ANALYZE TABLE t1; 13438Table Op Msg_type Msg_text 13439test.t1 analyze status OK 13440CHECK TABLE t1 EXTENDED; 13441Table Op Msg_type Msg_text 13442test.t1 check status OK 13443CHECKSUM TABLE t1 EXTENDED; 13444Table Checksum 13445test.t1 <some_value> 13446OPTIMIZE TABLE t1; 13447Table Op Msg_type Msg_text 13448test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 13449test.t1 optimize status OK 13450# check layout success: 1 13451REPAIR TABLE t1 EXTENDED; 13452Table Op Msg_type Msg_text 13453test.t1 repair status OK 13454# check layout success: 1 13455TRUNCATE t1; 13456 13457# check TRUNCATE success: 1 13458# check layout success: 1 13459# End usability test (inc/partition_check.inc) 13460DROP TABLE t1; 13461CREATE TABLE t1 ( 13462f_int1 INTEGER, 13463f_int2 INTEGER, 13464f_char1 CHAR(20), 13465f_char2 CHAR(20), 13466f_charbig VARCHAR(1000) 13467, UNIQUE INDEX uidx1 (f_int1,f_int2) 13468) 13469PARTITION BY RANGE(f_int1) 13470(PARTITION parta VALUES LESS THAN (0), 13471PARTITION partb VALUES LESS THAN (5), 13472PARTITION partc VALUES LESS THAN (10), 13473PARTITION partd VALUES LESS THAN (10 + 5), 13474PARTITION parte VALUES LESS THAN (20), 13475PARTITION partf VALUES LESS THAN (2147483646)); 13476INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13477SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13478WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 13479ALTER TABLE t1 MODIFY f_int2 BIGINT; 13480INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13481SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13482WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 13483# Start usability test (inc/partition_check.inc) 13484create_command 13485SHOW CREATE TABLE t1; 13486Table Create Table 13487t1 CREATE TABLE `t1` ( 13488 `f_int1` int(11) DEFAULT NULL, 13489 `f_int2` bigint(20) DEFAULT NULL, 13490 `f_char1` char(20) DEFAULT NULL, 13491 `f_char2` char(20) DEFAULT NULL, 13492 `f_charbig` varchar(1000) DEFAULT NULL, 13493 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 13494) ENGINE=TokuDB DEFAULT CHARSET=latin1 13495/*!50100 PARTITION BY RANGE (f_int1) 13496(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 13497 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 13498 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 13499 PARTITION partd VALUES LESS THAN (15) ENGINE = TokuDB, 13500 PARTITION parte VALUES LESS THAN (20) ENGINE = TokuDB, 13501 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 13502 13503# check prerequisites-1 success: 1 13504# check COUNT(*) success: 1 13505# check MIN/MAX(f_int1) success: 1 13506# check MIN/MAX(f_int2) success: 1 13507INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13508SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13509CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 13510WHERE f_int1 IN (2,3); 13511ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 13512# check prerequisites-3 success: 1 13513# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 13514INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13515SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13516CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13517WHERE f_int1 IN (2,3); 13518DELETE FROM t1 WHERE f_charbig = 'delete me'; 13519INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13520SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 13521CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 13522WHERE f_int1 IN (2,3); 13523DELETE FROM t1 WHERE f_charbig = 'delete me'; 13524# check read via f_int1 success: 1 13525# check read via f_int2 success: 1 13526 13527# check multiple-1 success: 1 13528DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 13529 13530# check multiple-2 success: 1 13531INSERT INTO t1 SELECT * FROM t0_template 13532WHERE MOD(f_int1,3) = 0; 13533 13534# check multiple-3 success: 1 13535UPDATE t1 SET f_int1 = f_int1 + @max_row 13536WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 13537AND @max_row_div2 + @max_row_div4; 13538 13539# check multiple-4 success: 1 13540DELETE FROM t1 13541WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 13542AND @max_row_div2 + @max_row_div4 + @max_row; 13543 13544# check multiple-5 success: 1 13545SELECT COUNT(*) INTO @try_count FROM t0_template 13546WHERE MOD(f_int1,3) = 0 13547AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13548SELECT COUNT(*) INTO @clash_count 13549FROM t1 INNER JOIN t0_template USING(f_int1) 13550WHERE MOD(f_int1,3) = 0 13551AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13552SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 13553INSERT INTO t1 13554SET f_int1 = @cur_value , f_int2 = @cur_value, 13555f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13556f_charbig = '#SINGLE#'; 13557 13558# check single-1 success: 1 13559SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 13560INSERT INTO t1 13561SET f_int1 = @cur_value , f_int2 = @cur_value, 13562f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 13563f_charbig = '#SINGLE#'; 13564 13565# check single-2 success: 1 13566SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 13567SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 13568UPDATE t1 SET f_int1 = @cur_value2 13569WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 13570 13571# check single-3 success: 1 13572SET @cur_value1= -1; 13573SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 13574UPDATE t1 SET f_int1 = @cur_value1 13575WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 13576 13577# check single-4 success: 1 13578SELECT MAX(f_int1) INTO @cur_value FROM t1; 13579DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 13580 13581# check single-5 success: 1 13582DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 13583 13584# check single-6 success: 1 13585INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 13586ERROR HY000: Table has no partition for value 2147483647 13587DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 13588INSERT t1 SET f_int1 = 0 , f_int2 = 0, 13589f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 13590f_charbig = '#NULL#'; 13591INSERT INTO t1 13592SET f_int1 = NULL , f_int2 = -@max_row, 13593f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 13594f_charbig = '#NULL#'; 13595# check null success: 1 13596 13597# check null-1 success: 1 13598UPDATE t1 SET f_int1 = -@max_row 13599WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13600AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13601 13602# check null-2 success: 1 13603UPDATE t1 SET f_int1 = NULL 13604WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13605AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13606 13607# check null-3 success: 1 13608DELETE FROM t1 13609WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 13610AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 13611 13612# check null-4 success: 1 13613DELETE FROM t1 13614WHERE f_int1 = 0 AND f_int2 = 0 13615AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 13616AND f_charbig = '#NULL#'; 13617INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13618SELECT f_int1, f_int1, '', '', 'was inserted' 13619 FROM t0_template source_tab 13620WHERE MOD(f_int1,3) = 0 13621AND f_int1 BETWEEN @max_row_div2 AND @max_row 13622ON DUPLICATE KEY 13623UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 13624f_int2 = 2 * @max_row + source_tab.f_int1, 13625f_charbig = 'was updated'; 13626 13627# check unique-1-a success: 1 13628 13629# check unique-1-b success: 1 13630DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13631UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13632f_int2 = CAST(f_char1 AS SIGNED INT), 13633f_charbig = CONCAT('===',f_char1,'===') 13634WHERE f_charbig = 'was updated'; 13635REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13636SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 13637 FROM t0_template source_tab 13638WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 13639 13640# check replace success: 1 13641DELETE FROM t1 13642WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 13643DELETE FROM t1 13644WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 13645f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 13646UPDATE t1 SET f_int2 = f_int1, 13647f_char1 = CAST(f_int1 AS CHAR), 13648f_char2 = CAST(f_int1 AS CHAR), 13649f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 13650WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 13651SET AUTOCOMMIT= 0; 13652INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13653SELECT f_int1, f_int1, '', '', 'was inserted' 13654FROM t0_template source_tab 13655WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13656 13657# check transactions-1 success: 1 13658COMMIT WORK; 13659 13660# check transactions-2 success: 1 13661ROLLBACK WORK; 13662 13663# check transactions-3 success: 1 13664DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13665COMMIT WORK; 13666ROLLBACK WORK; 13667 13668# check transactions-4 success: 1 13669INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13670SELECT f_int1, f_int1, '', '', 'was inserted' 13671FROM t0_template source_tab 13672WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13673 13674# check transactions-5 success: 1 13675ROLLBACK WORK; 13676 13677# check transactions-6 success: 1 13678# INFO: Storage engine used for t1 seems to be transactional. 13679COMMIT; 13680 13681# check transactions-7 success: 1 13682DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13683COMMIT WORK; 13684SET @@session.sql_mode = 'traditional'; 13685Warnings: 13686Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13687SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 13688INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13689SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 13690'', '', 'was inserted' FROM t0_template 13691WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 13692ERROR 22012: Division by 0 13693COMMIT; 13694 13695# check transactions-8 success: 1 13696# INFO: Storage engine used for t1 seems to be able to revert 13697# changes made by the failing statement. 13698SET @@session.sql_mode = ''; 13699Warnings: 13700Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 13701SET AUTOCOMMIT= 1; 13702DELETE FROM t1 WHERE f_charbig = 'was inserted'; 13703COMMIT WORK; 13704UPDATE t1 SET f_charbig = REPEAT('b', 1000); 13705 13706# check special-1 success: 1 13707UPDATE t1 SET f_charbig = ''; 13708 13709# check special-2 success: 1 13710UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 13711INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13712SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 13713WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13714INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13715SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13716'just inserted' FROM t0_template 13717WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13718CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 13719BEGIN 13720UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13721f_charbig = 'updated by trigger' 13722 WHERE f_int1 = new.f_int1; 13723END| 13724INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13725SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13726WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13727 13728# check trigger-1 success: 1 13729DROP TRIGGER trg_1; 13730UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13731f_int2 = CAST(f_char1 AS SIGNED INT), 13732f_charbig = 'just inserted' 13733 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13734DELETE FROM t0_aux 13735WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13736INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13737SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13738'just inserted' FROM t0_template 13739WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13740CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 13741BEGIN 13742UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13743f_charbig = 'updated by trigger' 13744 WHERE f_int1 = new.f_int1; 13745END| 13746INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13747SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 13748WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13749 13750# check trigger-2 success: 1 13751DROP TRIGGER trg_1; 13752UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13753f_int2 = CAST(f_char1 AS SIGNED INT), 13754f_charbig = 'just inserted' 13755 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13756DELETE FROM t0_aux 13757WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13758INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13759SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13760'just inserted' FROM t0_template 13761WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13762CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13763BEGIN 13764UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13765f_charbig = 'updated by trigger' 13766 WHERE f_int1 = new.f_int1; 13767END| 13768UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13769WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13770 13771# check trigger-3 success: 1 13772DROP TRIGGER trg_1; 13773UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13774f_int2 = CAST(f_char1 AS SIGNED INT), 13775f_charbig = 'just inserted' 13776 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13777DELETE FROM t0_aux 13778WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13779INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13780SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13781'just inserted' FROM t0_template 13782WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13783CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 13784BEGIN 13785UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13786f_charbig = 'updated by trigger' 13787 WHERE f_int1 = - old.f_int1; 13788END| 13789UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13790WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13791 13792# check trigger-4 success: 1 13793DROP TRIGGER trg_1; 13794UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13795f_int2 = CAST(f_char1 AS SIGNED INT), 13796f_charbig = 'just inserted' 13797 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13798DELETE FROM t0_aux 13799WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13800INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13801SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13802'just inserted' FROM t0_template 13803WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13804CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13805BEGIN 13806UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13807f_charbig = 'updated by trigger' 13808 WHERE f_int1 = new.f_int1; 13809END| 13810UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13811WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13812 13813# check trigger-5 success: 1 13814DROP TRIGGER trg_1; 13815UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13816f_int2 = CAST(f_char1 AS SIGNED INT), 13817f_charbig = 'just inserted' 13818 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13819DELETE FROM t0_aux 13820WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13821INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13822SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13823'just inserted' FROM t0_template 13824WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13825CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 13826BEGIN 13827UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13828f_charbig = 'updated by trigger' 13829 WHERE f_int1 = - old.f_int1; 13830END| 13831UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 13832WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13833 13834# check trigger-6 success: 1 13835DROP TRIGGER trg_1; 13836UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13837f_int2 = CAST(f_char1 AS SIGNED INT), 13838f_charbig = 'just inserted' 13839 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13840DELETE FROM t0_aux 13841WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13842INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13843SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13844'just inserted' FROM t0_template 13845WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13846CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 13847BEGIN 13848UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13849f_charbig = 'updated by trigger' 13850 WHERE f_int1 = - old.f_int1; 13851END| 13852DELETE FROM t0_aux 13853WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13854 13855# check trigger-7 success: 1 13856DROP TRIGGER trg_1; 13857UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13858f_int2 = CAST(f_char1 AS SIGNED INT), 13859f_charbig = 'just inserted' 13860 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13861DELETE FROM t0_aux 13862WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13863INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 13864SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 13865'just inserted' FROM t0_template 13866WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13867CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 13868BEGIN 13869UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 13870f_charbig = 'updated by trigger' 13871 WHERE f_int1 = - old.f_int1; 13872END| 13873DELETE FROM t0_aux 13874WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 13875 13876# check trigger-8 success: 1 13877DROP TRIGGER trg_1; 13878UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13879f_int2 = CAST(f_char1 AS SIGNED INT), 13880f_charbig = 'just inserted' 13881 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 13882DELETE FROM t0_aux 13883WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13884DELETE FROM t1 13885WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 13886CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13887BEGIN 13888SET new.f_int1 = old.f_int1 + @max_row, 13889new.f_int2 = old.f_int2 - @max_row, 13890new.f_charbig = '####updated per update trigger####'; 13891END| 13892UPDATE t1 13893SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13894f_charbig = '####updated per update statement itself####'; 13895 13896# check trigger-9 success: 1 13897DROP TRIGGER trg_2; 13898UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13899f_int2 = CAST(f_char1 AS SIGNED INT), 13900f_charbig = CONCAT('===',f_char1,'==='); 13901CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 13902BEGIN 13903SET new.f_int1 = new.f_int1 + @max_row, 13904new.f_int2 = new.f_int2 - @max_row, 13905new.f_charbig = '####updated per update trigger####'; 13906END| 13907UPDATE t1 13908SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 13909f_charbig = '####updated per update statement itself####'; 13910 13911# check trigger-10 success: 1 13912DROP TRIGGER trg_2; 13913UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 13914f_int2 = CAST(f_char1 AS SIGNED INT), 13915f_charbig = CONCAT('===',f_char1,'==='); 13916CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13917BEGIN 13918SET new.f_int1 = @my_max1 + @counter, 13919new.f_int2 = @my_min2 - @counter, 13920new.f_charbig = '####updated per insert trigger####'; 13921SET @counter = @counter + 1; 13922END| 13923SET @counter = 1; 13924SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13925INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 13926SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 13927CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13928WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13929ORDER BY f_int1; 13930DROP TRIGGER trg_3; 13931 13932# check trigger-11 success: 1 13933DELETE FROM t1 13934WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13935AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13936AND f_charbig = '####updated per insert trigger####'; 13937CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 13938BEGIN 13939SET new.f_int1 = @my_max1 + @counter, 13940new.f_int2 = @my_min2 - @counter, 13941new.f_charbig = '####updated per insert trigger####'; 13942SET @counter = @counter + 1; 13943END| 13944SET @counter = 1; 13945SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 13946INSERT INTO t1 (f_char1, f_char2, f_charbig) 13947SELECT CAST(f_int1 AS CHAR), 13948CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 13949WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 13950ORDER BY f_int1; 13951DROP TRIGGER trg_3; 13952 13953# check trigger-12 success: 1 13954DELETE FROM t1 13955WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 13956AND f_int2 <> CAST(f_char1 AS SIGNED INT) 13957AND f_charbig = '####updated per insert trigger####'; 13958ANALYZE TABLE t1; 13959Table Op Msg_type Msg_text 13960test.t1 analyze status OK 13961CHECK TABLE t1 EXTENDED; 13962Table Op Msg_type Msg_text 13963test.t1 check status OK 13964CHECKSUM TABLE t1 EXTENDED; 13965Table Checksum 13966test.t1 <some_value> 13967OPTIMIZE TABLE t1; 13968Table Op Msg_type Msg_text 13969test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 13970test.t1 optimize status OK 13971# check layout success: 1 13972REPAIR TABLE t1 EXTENDED; 13973Table Op Msg_type Msg_text 13974test.t1 repair status OK 13975# check layout success: 1 13976TRUNCATE t1; 13977 13978# check TRUNCATE success: 1 13979# check layout success: 1 13980# End usability test (inc/partition_check.inc) 13981DROP TABLE t1; 13982CREATE TABLE t1 ( 13983f_int1 INTEGER, 13984f_int2 INTEGER, 13985f_char1 CHAR(20), 13986f_char2 CHAR(20), 13987f_charbig VARCHAR(1000) 13988, UNIQUE INDEX uidx1 (f_int1,f_int2) 13989) 13990PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 13991(PARTITION parta VALUES LESS THAN (0), 13992PARTITION partb VALUES LESS THAN (5), 13993PARTITION partc VALUES LESS THAN (10), 13994PARTITION partd VALUES LESS THAN (2147483646)); 13995INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 13996SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 13997WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 13998ALTER TABLE t1 MODIFY f_int2 BIGINT; 13999INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14000SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14001WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 14002# Start usability test (inc/partition_check.inc) 14003create_command 14004SHOW CREATE TABLE t1; 14005Table Create Table 14006t1 CREATE TABLE `t1` ( 14007 `f_int1` int(11) DEFAULT NULL, 14008 `f_int2` bigint(20) DEFAULT NULL, 14009 `f_char1` char(20) DEFAULT NULL, 14010 `f_char2` char(20) DEFAULT NULL, 14011 `f_charbig` varchar(1000) DEFAULT NULL, 14012 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 14013) ENGINE=TokuDB DEFAULT CHARSET=latin1 14014/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 14015SUBPARTITION BY HASH (f_int1) 14016SUBPARTITIONS 2 14017(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 14018 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 14019 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 14020 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 14021 14022# check prerequisites-1 success: 1 14023# check COUNT(*) success: 1 14024# check MIN/MAX(f_int1) success: 1 14025# check MIN/MAX(f_int2) success: 1 14026INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14027SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14028CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14029WHERE f_int1 IN (2,3); 14030ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 14031# check prerequisites-3 success: 1 14032# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 14033INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14034SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14035CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14036WHERE f_int1 IN (2,3); 14037DELETE FROM t1 WHERE f_charbig = 'delete me'; 14038INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14039SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14040CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14041WHERE f_int1 IN (2,3); 14042DELETE FROM t1 WHERE f_charbig = 'delete me'; 14043# check read via f_int1 success: 1 14044# check read via f_int2 success: 1 14045 14046# check multiple-1 success: 1 14047DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14048 14049# check multiple-2 success: 1 14050INSERT INTO t1 SELECT * FROM t0_template 14051WHERE MOD(f_int1,3) = 0; 14052 14053# check multiple-3 success: 1 14054UPDATE t1 SET f_int1 = f_int1 + @max_row 14055WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14056AND @max_row_div2 + @max_row_div4; 14057 14058# check multiple-4 success: 1 14059DELETE FROM t1 14060WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 14061AND @max_row_div2 + @max_row_div4 + @max_row; 14062 14063# check multiple-5 success: 1 14064SELECT COUNT(*) INTO @try_count FROM t0_template 14065WHERE MOD(f_int1,3) = 0 14066AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14067SELECT COUNT(*) INTO @clash_count 14068FROM t1 INNER JOIN t0_template USING(f_int1) 14069WHERE MOD(f_int1,3) = 0 14070AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14071SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 14072INSERT INTO t1 14073SET f_int1 = @cur_value , f_int2 = @cur_value, 14074f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14075f_charbig = '#SINGLE#'; 14076 14077# check single-1 success: 1 14078SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 14079INSERT INTO t1 14080SET f_int1 = @cur_value , f_int2 = @cur_value, 14081f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14082f_charbig = '#SINGLE#'; 14083 14084# check single-2 success: 1 14085SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14086SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14087UPDATE t1 SET f_int1 = @cur_value2 14088WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14089 14090# check single-3 success: 1 14091SET @cur_value1= -1; 14092SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14093UPDATE t1 SET f_int1 = @cur_value1 14094WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14095 14096# check single-4 success: 1 14097SELECT MAX(f_int1) INTO @cur_value FROM t1; 14098DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14099 14100# check single-5 success: 1 14101DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14102 14103# check single-6 success: 1 14104INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14105 14106# check single-7 success: 1 14107DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 14108DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14109INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14110f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14111f_charbig = '#NULL#'; 14112INSERT INTO t1 14113SET f_int1 = NULL , f_int2 = -@max_row, 14114f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14115f_charbig = '#NULL#'; 14116# check null success: 1 14117 14118# check null-1 success: 1 14119UPDATE t1 SET f_int1 = -@max_row 14120WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14121AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14122 14123# check null-2 success: 1 14124UPDATE t1 SET f_int1 = NULL 14125WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14126AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14127 14128# check null-3 success: 1 14129DELETE FROM t1 14130WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14131AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14132 14133# check null-4 success: 1 14134DELETE FROM t1 14135WHERE f_int1 = 0 AND f_int2 = 0 14136AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14137AND f_charbig = '#NULL#'; 14138INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14139SELECT f_int1, f_int1, '', '', 'was inserted' 14140 FROM t0_template source_tab 14141WHERE MOD(f_int1,3) = 0 14142AND f_int1 BETWEEN @max_row_div2 AND @max_row 14143ON DUPLICATE KEY 14144UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 14145f_int2 = 2 * @max_row + source_tab.f_int1, 14146f_charbig = 'was updated'; 14147 14148# check unique-1-a success: 1 14149 14150# check unique-1-b success: 1 14151DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14152UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14153f_int2 = CAST(f_char1 AS SIGNED INT), 14154f_charbig = CONCAT('===',f_char1,'===') 14155WHERE f_charbig = 'was updated'; 14156REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14157SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 14158 FROM t0_template source_tab 14159WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14160 14161# check replace success: 1 14162DELETE FROM t1 14163WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 14164DELETE FROM t1 14165WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 14166f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 14167UPDATE t1 SET f_int2 = f_int1, 14168f_char1 = CAST(f_int1 AS CHAR), 14169f_char2 = CAST(f_int1 AS CHAR), 14170f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 14171WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 14172SET AUTOCOMMIT= 0; 14173INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14174SELECT f_int1, f_int1, '', '', 'was inserted' 14175FROM t0_template source_tab 14176WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14177 14178# check transactions-1 success: 1 14179COMMIT WORK; 14180 14181# check transactions-2 success: 1 14182ROLLBACK WORK; 14183 14184# check transactions-3 success: 1 14185DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14186COMMIT WORK; 14187ROLLBACK WORK; 14188 14189# check transactions-4 success: 1 14190INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14191SELECT f_int1, f_int1, '', '', 'was inserted' 14192FROM t0_template source_tab 14193WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14194 14195# check transactions-5 success: 1 14196ROLLBACK WORK; 14197 14198# check transactions-6 success: 1 14199# INFO: Storage engine used for t1 seems to be transactional. 14200COMMIT; 14201 14202# check transactions-7 success: 1 14203DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14204COMMIT WORK; 14205SET @@session.sql_mode = 'traditional'; 14206Warnings: 14207Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14208SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14209INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14210SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14211'', '', 'was inserted' FROM t0_template 14212WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14213ERROR 22012: Division by 0 14214COMMIT; 14215 14216# check transactions-8 success: 1 14217# INFO: Storage engine used for t1 seems to be able to revert 14218# changes made by the failing statement. 14219SET @@session.sql_mode = ''; 14220Warnings: 14221Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14222SET AUTOCOMMIT= 1; 14223DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14224COMMIT WORK; 14225UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14226 14227# check special-1 success: 1 14228UPDATE t1 SET f_charbig = ''; 14229 14230# check special-2 success: 1 14231UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14232INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14233SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14234WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14235INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14236SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14237'just inserted' FROM t0_template 14238WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14239CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14240BEGIN 14241UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14242f_charbig = 'updated by trigger' 14243 WHERE f_int1 = new.f_int1; 14244END| 14245INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14246SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14247WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14248 14249# check trigger-1 success: 1 14250DROP TRIGGER trg_1; 14251UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14252f_int2 = CAST(f_char1 AS SIGNED INT), 14253f_charbig = 'just inserted' 14254 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14255DELETE FROM t0_aux 14256WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14257INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14258SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14259'just inserted' FROM t0_template 14260WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14261CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14262BEGIN 14263UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14264f_charbig = 'updated by trigger' 14265 WHERE f_int1 = new.f_int1; 14266END| 14267INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14268SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14269WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14270 14271# check trigger-2 success: 1 14272DROP TRIGGER trg_1; 14273UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14274f_int2 = CAST(f_char1 AS SIGNED INT), 14275f_charbig = 'just inserted' 14276 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14277DELETE FROM t0_aux 14278WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14279INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14280SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14281'just inserted' FROM t0_template 14282WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14283CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14284BEGIN 14285UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14286f_charbig = 'updated by trigger' 14287 WHERE f_int1 = new.f_int1; 14288END| 14289UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14290WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14291 14292# check trigger-3 success: 1 14293DROP TRIGGER trg_1; 14294UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14295f_int2 = CAST(f_char1 AS SIGNED INT), 14296f_charbig = 'just inserted' 14297 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14298DELETE FROM t0_aux 14299WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14300INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14301SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14302'just inserted' FROM t0_template 14303WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14304CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14305BEGIN 14306UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14307f_charbig = 'updated by trigger' 14308 WHERE f_int1 = - old.f_int1; 14309END| 14310UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14311WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14312 14313# check trigger-4 success: 1 14314DROP TRIGGER trg_1; 14315UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14316f_int2 = CAST(f_char1 AS SIGNED INT), 14317f_charbig = 'just inserted' 14318 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14319DELETE FROM t0_aux 14320WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14321INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14322SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14323'just inserted' FROM t0_template 14324WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14325CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14326BEGIN 14327UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14328f_charbig = 'updated by trigger' 14329 WHERE f_int1 = new.f_int1; 14330END| 14331UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14332WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14333 14334# check trigger-5 success: 1 14335DROP TRIGGER trg_1; 14336UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14337f_int2 = CAST(f_char1 AS SIGNED INT), 14338f_charbig = 'just inserted' 14339 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14340DELETE FROM t0_aux 14341WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14342INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14343SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14344'just inserted' FROM t0_template 14345WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14346CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14347BEGIN 14348UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14349f_charbig = 'updated by trigger' 14350 WHERE f_int1 = - old.f_int1; 14351END| 14352UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14353WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14354 14355# check trigger-6 success: 1 14356DROP TRIGGER trg_1; 14357UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14358f_int2 = CAST(f_char1 AS SIGNED INT), 14359f_charbig = 'just inserted' 14360 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14361DELETE FROM t0_aux 14362WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14363INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14364SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14365'just inserted' FROM t0_template 14366WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14367CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14368BEGIN 14369UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14370f_charbig = 'updated by trigger' 14371 WHERE f_int1 = - old.f_int1; 14372END| 14373DELETE FROM t0_aux 14374WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14375 14376# check trigger-7 success: 1 14377DROP TRIGGER trg_1; 14378UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14379f_int2 = CAST(f_char1 AS SIGNED INT), 14380f_charbig = 'just inserted' 14381 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14382DELETE FROM t0_aux 14383WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14384INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14385SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14386'just inserted' FROM t0_template 14387WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14388CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14389BEGIN 14390UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14391f_charbig = 'updated by trigger' 14392 WHERE f_int1 = - old.f_int1; 14393END| 14394DELETE FROM t0_aux 14395WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14396 14397# check trigger-8 success: 1 14398DROP TRIGGER trg_1; 14399UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14400f_int2 = CAST(f_char1 AS SIGNED INT), 14401f_charbig = 'just inserted' 14402 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14403DELETE FROM t0_aux 14404WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14405DELETE FROM t1 14406WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14407CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14408BEGIN 14409SET new.f_int1 = old.f_int1 + @max_row, 14410new.f_int2 = old.f_int2 - @max_row, 14411new.f_charbig = '####updated per update trigger####'; 14412END| 14413UPDATE t1 14414SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14415f_charbig = '####updated per update statement itself####'; 14416 14417# check trigger-9 success: 1 14418DROP TRIGGER trg_2; 14419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14420f_int2 = CAST(f_char1 AS SIGNED INT), 14421f_charbig = CONCAT('===',f_char1,'==='); 14422CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14423BEGIN 14424SET new.f_int1 = new.f_int1 + @max_row, 14425new.f_int2 = new.f_int2 - @max_row, 14426new.f_charbig = '####updated per update trigger####'; 14427END| 14428UPDATE t1 14429SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14430f_charbig = '####updated per update statement itself####'; 14431 14432# check trigger-10 success: 1 14433DROP TRIGGER trg_2; 14434UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14435f_int2 = CAST(f_char1 AS SIGNED INT), 14436f_charbig = CONCAT('===',f_char1,'==='); 14437CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14438BEGIN 14439SET new.f_int1 = @my_max1 + @counter, 14440new.f_int2 = @my_min2 - @counter, 14441new.f_charbig = '####updated per insert trigger####'; 14442SET @counter = @counter + 1; 14443END| 14444SET @counter = 1; 14445SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14446INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14447SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14448CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14450ORDER BY f_int1; 14451DROP TRIGGER trg_3; 14452 14453# check trigger-11 success: 1 14454DELETE FROM t1 14455WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14456AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14457AND f_charbig = '####updated per insert trigger####'; 14458CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14459BEGIN 14460SET new.f_int1 = @my_max1 + @counter, 14461new.f_int2 = @my_min2 - @counter, 14462new.f_charbig = '####updated per insert trigger####'; 14463SET @counter = @counter + 1; 14464END| 14465SET @counter = 1; 14466SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14467INSERT INTO t1 (f_char1, f_char2, f_charbig) 14468SELECT CAST(f_int1 AS CHAR), 14469CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14470WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14471ORDER BY f_int1; 14472DROP TRIGGER trg_3; 14473 14474# check trigger-12 success: 1 14475DELETE FROM t1 14476WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14477AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14478AND f_charbig = '####updated per insert trigger####'; 14479ANALYZE TABLE t1; 14480Table Op Msg_type Msg_text 14481test.t1 analyze status OK 14482CHECK TABLE t1 EXTENDED; 14483Table Op Msg_type Msg_text 14484test.t1 check status OK 14485CHECKSUM TABLE t1 EXTENDED; 14486Table Checksum 14487test.t1 <some_value> 14488OPTIMIZE TABLE t1; 14489Table Op Msg_type Msg_text 14490test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 14491test.t1 optimize status OK 14492# check layout success: 1 14493REPAIR TABLE t1 EXTENDED; 14494Table Op Msg_type Msg_text 14495test.t1 repair status OK 14496# check layout success: 1 14497TRUNCATE t1; 14498 14499# check TRUNCATE success: 1 14500# check layout success: 1 14501# End usability test (inc/partition_check.inc) 14502DROP TABLE t1; 14503CREATE TABLE t1 ( 14504f_int1 INTEGER, 14505f_int2 INTEGER, 14506f_char1 CHAR(20), 14507f_char2 CHAR(20), 14508f_charbig VARCHAR(1000) 14509, UNIQUE INDEX uidx1 (f_int1,f_int2) 14510) 14511PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 14512(PARTITION part1 VALUES LESS THAN (0) 14513(SUBPARTITION subpart11, SUBPARTITION subpart12), 14514PARTITION part2 VALUES LESS THAN (5) 14515(SUBPARTITION subpart21, SUBPARTITION subpart22), 14516PARTITION part3 VALUES LESS THAN (10) 14517(SUBPARTITION subpart31, SUBPARTITION subpart32), 14518PARTITION part4 VALUES LESS THAN (2147483646) 14519(SUBPARTITION subpart41, SUBPARTITION subpart42)); 14520INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14521SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14522WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 14523ALTER TABLE t1 MODIFY f_int2 BIGINT; 14524INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14525SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 14526WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 14527# Start usability test (inc/partition_check.inc) 14528create_command 14529SHOW CREATE TABLE t1; 14530Table Create Table 14531t1 CREATE TABLE `t1` ( 14532 `f_int1` int(11) DEFAULT NULL, 14533 `f_int2` bigint(20) DEFAULT NULL, 14534 `f_char1` char(20) DEFAULT NULL, 14535 `f_char2` char(20) DEFAULT NULL, 14536 `f_charbig` varchar(1000) DEFAULT NULL, 14537 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 14538) ENGINE=TokuDB DEFAULT CHARSET=latin1 14539/*!50100 PARTITION BY RANGE (f_int1) 14540SUBPARTITION BY KEY (f_int1) 14541(PARTITION part1 VALUES LESS THAN (0) 14542 (SUBPARTITION subpart11 ENGINE = TokuDB, 14543 SUBPARTITION subpart12 ENGINE = TokuDB), 14544 PARTITION part2 VALUES LESS THAN (5) 14545 (SUBPARTITION subpart21 ENGINE = TokuDB, 14546 SUBPARTITION subpart22 ENGINE = TokuDB), 14547 PARTITION part3 VALUES LESS THAN (10) 14548 (SUBPARTITION subpart31 ENGINE = TokuDB, 14549 SUBPARTITION subpart32 ENGINE = TokuDB), 14550 PARTITION part4 VALUES LESS THAN (2147483646) 14551 (SUBPARTITION subpart41 ENGINE = TokuDB, 14552 SUBPARTITION subpart42 ENGINE = TokuDB)) */ 14553 14554# check prerequisites-1 success: 1 14555# check COUNT(*) success: 1 14556# check MIN/MAX(f_int1) success: 1 14557# check MIN/MAX(f_int2) success: 1 14558INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14559SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14560CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 14561WHERE f_int1 IN (2,3); 14562ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 14563# check prerequisites-3 success: 1 14564# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 14565INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14566SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14567CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14568WHERE f_int1 IN (2,3); 14569DELETE FROM t1 WHERE f_charbig = 'delete me'; 14570INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14571SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 14572CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 14573WHERE f_int1 IN (2,3); 14574DELETE FROM t1 WHERE f_charbig = 'delete me'; 14575# check read via f_int1 success: 1 14576# check read via f_int2 success: 1 14577 14578# check multiple-1 success: 1 14579DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 14580 14581# check multiple-2 success: 1 14582INSERT INTO t1 SELECT * FROM t0_template 14583WHERE MOD(f_int1,3) = 0; 14584 14585# check multiple-3 success: 1 14586UPDATE t1 SET f_int1 = f_int1 + @max_row 14587WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 14588AND @max_row_div2 + @max_row_div4; 14589 14590# check multiple-4 success: 1 14591DELETE FROM t1 14592WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 14593AND @max_row_div2 + @max_row_div4 + @max_row; 14594 14595# check multiple-5 success: 1 14596SELECT COUNT(*) INTO @try_count FROM t0_template 14597WHERE MOD(f_int1,3) = 0 14598AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14599SELECT COUNT(*) INTO @clash_count 14600FROM t1 INNER JOIN t0_template USING(f_int1) 14601WHERE MOD(f_int1,3) = 0 14602AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14603SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 14604INSERT INTO t1 14605SET f_int1 = @cur_value , f_int2 = @cur_value, 14606f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14607f_charbig = '#SINGLE#'; 14608 14609# check single-1 success: 1 14610SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 14611INSERT INTO t1 14612SET f_int1 = @cur_value , f_int2 = @cur_value, 14613f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 14614f_charbig = '#SINGLE#'; 14615 14616# check single-2 success: 1 14617SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 14618SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 14619UPDATE t1 SET f_int1 = @cur_value2 14620WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 14621 14622# check single-3 success: 1 14623SET @cur_value1= -1; 14624SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 14625UPDATE t1 SET f_int1 = @cur_value1 14626WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 14627 14628# check single-4 success: 1 14629SELECT MAX(f_int1) INTO @cur_value FROM t1; 14630DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 14631 14632# check single-5 success: 1 14633DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 14634 14635# check single-6 success: 1 14636INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 14637ERROR HY000: Table has no partition for value 2147483647 14638DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 14639INSERT t1 SET f_int1 = 0 , f_int2 = 0, 14640f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 14641f_charbig = '#NULL#'; 14642INSERT INTO t1 14643SET f_int1 = NULL , f_int2 = -@max_row, 14644f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 14645f_charbig = '#NULL#'; 14646# check null success: 1 14647 14648# check null-1 success: 1 14649UPDATE t1 SET f_int1 = -@max_row 14650WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14651AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14652 14653# check null-2 success: 1 14654UPDATE t1 SET f_int1 = NULL 14655WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14656AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14657 14658# check null-3 success: 1 14659DELETE FROM t1 14660WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 14661AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 14662 14663# check null-4 success: 1 14664DELETE FROM t1 14665WHERE f_int1 = 0 AND f_int2 = 0 14666AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 14667AND f_charbig = '#NULL#'; 14668INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14669SELECT f_int1, f_int1, '', '', 'was inserted' 14670 FROM t0_template source_tab 14671WHERE MOD(f_int1,3) = 0 14672AND f_int1 BETWEEN @max_row_div2 AND @max_row 14673ON DUPLICATE KEY 14674UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 14675f_int2 = 2 * @max_row + source_tab.f_int1, 14676f_charbig = 'was updated'; 14677 14678# check unique-1-a success: 1 14679 14680# check unique-1-b success: 1 14681DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14682UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14683f_int2 = CAST(f_char1 AS SIGNED INT), 14684f_charbig = CONCAT('===',f_char1,'===') 14685WHERE f_charbig = 'was updated'; 14686REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14687SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 14688 FROM t0_template source_tab 14689WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 14690 14691# check replace success: 1 14692DELETE FROM t1 14693WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 14694DELETE FROM t1 14695WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 14696f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 14697UPDATE t1 SET f_int2 = f_int1, 14698f_char1 = CAST(f_int1 AS CHAR), 14699f_char2 = CAST(f_int1 AS CHAR), 14700f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 14701WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 14702SET AUTOCOMMIT= 0; 14703INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14704SELECT f_int1, f_int1, '', '', 'was inserted' 14705FROM t0_template source_tab 14706WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14707 14708# check transactions-1 success: 1 14709COMMIT WORK; 14710 14711# check transactions-2 success: 1 14712ROLLBACK WORK; 14713 14714# check transactions-3 success: 1 14715DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14716COMMIT WORK; 14717ROLLBACK WORK; 14718 14719# check transactions-4 success: 1 14720INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14721SELECT f_int1, f_int1, '', '', 'was inserted' 14722FROM t0_template source_tab 14723WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14724 14725# check transactions-5 success: 1 14726ROLLBACK WORK; 14727 14728# check transactions-6 success: 1 14729# INFO: Storage engine used for t1 seems to be transactional. 14730COMMIT; 14731 14732# check transactions-7 success: 1 14733DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14734COMMIT WORK; 14735SET @@session.sql_mode = 'traditional'; 14736Warnings: 14737Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14738SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 14739INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14740SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 14741'', '', 'was inserted' FROM t0_template 14742WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 14743ERROR 22012: Division by 0 14744COMMIT; 14745 14746# check transactions-8 success: 1 14747# INFO: Storage engine used for t1 seems to be able to revert 14748# changes made by the failing statement. 14749SET @@session.sql_mode = ''; 14750Warnings: 14751Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 14752SET AUTOCOMMIT= 1; 14753DELETE FROM t1 WHERE f_charbig = 'was inserted'; 14754COMMIT WORK; 14755UPDATE t1 SET f_charbig = REPEAT('b', 1000); 14756 14757# check special-1 success: 1 14758UPDATE t1 SET f_charbig = ''; 14759 14760# check special-2 success: 1 14761UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 14762INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 14763SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 14764WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14765INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14766SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14767'just inserted' FROM t0_template 14768WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14769CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 14770BEGIN 14771UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14772f_charbig = 'updated by trigger' 14773 WHERE f_int1 = new.f_int1; 14774END| 14775INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14776SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14777WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14778 14779# check trigger-1 success: 1 14780DROP TRIGGER trg_1; 14781UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14782f_int2 = CAST(f_char1 AS SIGNED INT), 14783f_charbig = 'just inserted' 14784 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14785DELETE FROM t0_aux 14786WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14787INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14788SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14789'just inserted' FROM t0_template 14790WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14791CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 14792BEGIN 14793UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14794f_charbig = 'updated by trigger' 14795 WHERE f_int1 = new.f_int1; 14796END| 14797INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14798SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 14799WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14800 14801# check trigger-2 success: 1 14802DROP TRIGGER trg_1; 14803UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14804f_int2 = CAST(f_char1 AS SIGNED INT), 14805f_charbig = 'just inserted' 14806 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14807DELETE FROM t0_aux 14808WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14809INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14810SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14811'just inserted' FROM t0_template 14812WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14813CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14814BEGIN 14815UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14816f_charbig = 'updated by trigger' 14817 WHERE f_int1 = new.f_int1; 14818END| 14819UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14820WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14821 14822# check trigger-3 success: 1 14823DROP TRIGGER trg_1; 14824UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14825f_int2 = CAST(f_char1 AS SIGNED INT), 14826f_charbig = 'just inserted' 14827 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14828DELETE FROM t0_aux 14829WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14830INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14831SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14832'just inserted' FROM t0_template 14833WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14834CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 14835BEGIN 14836UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14837f_charbig = 'updated by trigger' 14838 WHERE f_int1 = - old.f_int1; 14839END| 14840UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14841WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14842 14843# check trigger-4 success: 1 14844DROP TRIGGER trg_1; 14845UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14846f_int2 = CAST(f_char1 AS SIGNED INT), 14847f_charbig = 'just inserted' 14848 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14849DELETE FROM t0_aux 14850WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14851INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14852SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14853'just inserted' FROM t0_template 14854WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14855CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14856BEGIN 14857UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14858f_charbig = 'updated by trigger' 14859 WHERE f_int1 = new.f_int1; 14860END| 14861UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14862WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14863 14864# check trigger-5 success: 1 14865DROP TRIGGER trg_1; 14866UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14867f_int2 = CAST(f_char1 AS SIGNED INT), 14868f_charbig = 'just inserted' 14869 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14870DELETE FROM t0_aux 14871WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14872INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14873SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14874'just inserted' FROM t0_template 14875WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14876CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 14877BEGIN 14878UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14879f_charbig = 'updated by trigger' 14880 WHERE f_int1 = - old.f_int1; 14881END| 14882UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 14883WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14884 14885# check trigger-6 success: 1 14886DROP TRIGGER trg_1; 14887UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14888f_int2 = CAST(f_char1 AS SIGNED INT), 14889f_charbig = 'just inserted' 14890 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14891DELETE FROM t0_aux 14892WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14893INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14894SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14895'just inserted' FROM t0_template 14896WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14897CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 14898BEGIN 14899UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14900f_charbig = 'updated by trigger' 14901 WHERE f_int1 = - old.f_int1; 14902END| 14903DELETE FROM t0_aux 14904WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14905 14906# check trigger-7 success: 1 14907DROP TRIGGER trg_1; 14908UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14909f_int2 = CAST(f_char1 AS SIGNED INT), 14910f_charbig = 'just inserted' 14911 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14912DELETE FROM t0_aux 14913WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14914INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 14915SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 14916'just inserted' FROM t0_template 14917WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14918CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 14919BEGIN 14920UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 14921f_charbig = 'updated by trigger' 14922 WHERE f_int1 = - old.f_int1; 14923END| 14924DELETE FROM t0_aux 14925WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 14926 14927# check trigger-8 success: 1 14928DROP TRIGGER trg_1; 14929UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14930f_int2 = CAST(f_char1 AS SIGNED INT), 14931f_charbig = 'just inserted' 14932 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 14933DELETE FROM t0_aux 14934WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14935DELETE FROM t1 14936WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 14937CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14938BEGIN 14939SET new.f_int1 = old.f_int1 + @max_row, 14940new.f_int2 = old.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####'; 14946 14947# check trigger-9 success: 1 14948DROP TRIGGER trg_2; 14949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14950f_int2 = CAST(f_char1 AS SIGNED INT), 14951f_charbig = CONCAT('===',f_char1,'==='); 14952CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 14953BEGIN 14954SET new.f_int1 = new.f_int1 + @max_row, 14955new.f_int2 = new.f_int2 - @max_row, 14956new.f_charbig = '####updated per update trigger####'; 14957END| 14958UPDATE t1 14959SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 14960f_charbig = '####updated per update statement itself####'; 14961 14962# check trigger-10 success: 1 14963DROP TRIGGER trg_2; 14964UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 14965f_int2 = CAST(f_char1 AS SIGNED INT), 14966f_charbig = CONCAT('===',f_char1,'==='); 14967CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14968BEGIN 14969SET new.f_int1 = @my_max1 + @counter, 14970new.f_int2 = @my_min2 - @counter, 14971new.f_charbig = '####updated per insert trigger####'; 14972SET @counter = @counter + 1; 14973END| 14974SET @counter = 1; 14975SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14976INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 14977SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 14978CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 14979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 14980ORDER BY f_int1; 14981DROP TRIGGER trg_3; 14982 14983# check trigger-11 success: 1 14984DELETE FROM t1 14985WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 14986AND f_int2 <> CAST(f_char1 AS SIGNED INT) 14987AND f_charbig = '####updated per insert trigger####'; 14988CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 14989BEGIN 14990SET new.f_int1 = @my_max1 + @counter, 14991new.f_int2 = @my_min2 - @counter, 14992new.f_charbig = '####updated per insert trigger####'; 14993SET @counter = @counter + 1; 14994END| 14995SET @counter = 1; 14996SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 14997INSERT INTO t1 (f_char1, f_char2, f_charbig) 14998SELECT CAST(f_int1 AS CHAR), 14999CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15001ORDER BY f_int1; 15002DROP TRIGGER trg_3; 15003 15004# check trigger-12 success: 1 15005DELETE FROM t1 15006WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15007AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15008AND f_charbig = '####updated per insert trigger####'; 15009ANALYZE TABLE t1; 15010Table Op Msg_type Msg_text 15011test.t1 analyze status OK 15012CHECK TABLE t1 EXTENDED; 15013Table Op Msg_type Msg_text 15014test.t1 check status OK 15015CHECKSUM TABLE t1 EXTENDED; 15016Table Checksum 15017test.t1 <some_value> 15018OPTIMIZE TABLE t1; 15019Table Op Msg_type Msg_text 15020test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 15021test.t1 optimize status OK 15022# check layout success: 1 15023REPAIR TABLE t1 EXTENDED; 15024Table Op Msg_type Msg_text 15025test.t1 repair status OK 15026# check layout success: 1 15027TRUNCATE t1; 15028 15029# check TRUNCATE success: 1 15030# check layout success: 1 15031# End usability test (inc/partition_check.inc) 15032DROP TABLE t1; 15033CREATE TABLE t1 ( 15034f_int1 INTEGER, 15035f_int2 INTEGER, 15036f_char1 CHAR(20), 15037f_char2 CHAR(20), 15038f_charbig VARCHAR(1000) 15039, UNIQUE INDEX uidx1 (f_int1,f_int2) 15040) 15041PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 15042(PARTITION part1 VALUES IN (0) 15043(SUBPARTITION sp11, SUBPARTITION sp12), 15044PARTITION part2 VALUES IN (1) 15045(SUBPARTITION sp21, SUBPARTITION sp22), 15046PARTITION part3 VALUES IN (2) 15047(SUBPARTITION sp31, SUBPARTITION sp32), 15048PARTITION part4 VALUES IN (NULL) 15049(SUBPARTITION sp41, SUBPARTITION sp42)); 15050INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15051SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15052WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 15053ALTER TABLE t1 MODIFY f_int2 BIGINT; 15054INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15055SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15056WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 15057# Start usability test (inc/partition_check.inc) 15058create_command 15059SHOW CREATE TABLE t1; 15060Table Create Table 15061t1 CREATE TABLE `t1` ( 15062 `f_int1` int(11) DEFAULT NULL, 15063 `f_int2` bigint(20) DEFAULT NULL, 15064 `f_char1` char(20) DEFAULT NULL, 15065 `f_char2` char(20) DEFAULT NULL, 15066 `f_charbig` varchar(1000) DEFAULT NULL, 15067 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 15068) ENGINE=TokuDB DEFAULT CHARSET=latin1 15069/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 15070SUBPARTITION BY HASH (f_int1 + 1) 15071(PARTITION part1 VALUES IN (0) 15072 (SUBPARTITION sp11 ENGINE = TokuDB, 15073 SUBPARTITION sp12 ENGINE = TokuDB), 15074 PARTITION part2 VALUES IN (1) 15075 (SUBPARTITION sp21 ENGINE = TokuDB, 15076 SUBPARTITION sp22 ENGINE = TokuDB), 15077 PARTITION part3 VALUES IN (2) 15078 (SUBPARTITION sp31 ENGINE = TokuDB, 15079 SUBPARTITION sp32 ENGINE = TokuDB), 15080 PARTITION part4 VALUES IN (NULL) 15081 (SUBPARTITION sp41 ENGINE = TokuDB, 15082 SUBPARTITION sp42 ENGINE = TokuDB)) */ 15083 15084# check prerequisites-1 success: 1 15085# check COUNT(*) success: 1 15086# check MIN/MAX(f_int1) success: 1 15087# check MIN/MAX(f_int2) success: 1 15088INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15089SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15090CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15091WHERE f_int1 IN (2,3); 15092ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 15093# check prerequisites-3 success: 1 15094# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 15095INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15096SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15097CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15098WHERE f_int1 IN (2,3); 15099DELETE FROM t1 WHERE f_charbig = 'delete me'; 15100INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15101SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15102CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15103WHERE f_int1 IN (2,3); 15104DELETE FROM t1 WHERE f_charbig = 'delete me'; 15105# check read via f_int1 success: 1 15106# check read via f_int2 success: 1 15107 15108# check multiple-1 success: 1 15109DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15110 15111# check multiple-2 success: 1 15112INSERT INTO t1 SELECT * FROM t0_template 15113WHERE MOD(f_int1,3) = 0; 15114 15115# check multiple-3 success: 1 15116UPDATE t1 SET f_int1 = f_int1 + @max_row 15117WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15118AND @max_row_div2 + @max_row_div4; 15119 15120# check multiple-4 success: 1 15121DELETE FROM t1 15122WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15123AND @max_row_div2 + @max_row_div4 + @max_row; 15124 15125# check multiple-5 success: 1 15126SELECT COUNT(*) INTO @try_count FROM t0_template 15127WHERE MOD(f_int1,3) = 0 15128AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15129SELECT COUNT(*) INTO @clash_count 15130FROM t1 INNER JOIN t0_template USING(f_int1) 15131WHERE MOD(f_int1,3) = 0 15132AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15133SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15134INSERT INTO t1 15135SET f_int1 = @cur_value , f_int2 = @cur_value, 15136f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15137f_charbig = '#SINGLE#'; 15138 15139# check single-1 success: 1 15140SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15141INSERT INTO t1 15142SET f_int1 = @cur_value , f_int2 = @cur_value, 15143f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15144f_charbig = '#SINGLE#'; 15145 15146# check single-2 success: 1 15147SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15148SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15149UPDATE t1 SET f_int1 = @cur_value2 15150WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15151 15152# check single-3 success: 1 15153SET @cur_value1= -1; 15154SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15155UPDATE t1 SET f_int1 = @cur_value1 15156WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15157 15158# check single-4 success: 1 15159SELECT MAX(f_int1) INTO @cur_value FROM t1; 15160DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15161 15162# check single-5 success: 1 15163DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15164 15165# check single-6 success: 1 15166INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15167 15168# check single-7 success: 1 15169DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 15170DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15171INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15172f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15173f_charbig = '#NULL#'; 15174INSERT INTO t1 15175SET f_int1 = NULL , f_int2 = -@max_row, 15176f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15177f_charbig = '#NULL#'; 15178# check null success: 1 15179 15180# check null-1 success: 1 15181UPDATE t1 SET f_int1 = -@max_row 15182WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15183AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15184 15185# check null-2 success: 1 15186UPDATE t1 SET f_int1 = NULL 15187WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15188AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15189 15190# check null-3 success: 1 15191DELETE FROM t1 15192WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15193AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15194 15195# check null-4 success: 1 15196DELETE FROM t1 15197WHERE f_int1 = 0 AND f_int2 = 0 15198AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15199AND f_charbig = '#NULL#'; 15200INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15201SELECT f_int1, f_int1, '', '', 'was inserted' 15202 FROM t0_template source_tab 15203WHERE MOD(f_int1,3) = 0 15204AND f_int1 BETWEEN @max_row_div2 AND @max_row 15205ON DUPLICATE KEY 15206UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 15207f_int2 = 2 * @max_row + source_tab.f_int1, 15208f_charbig = 'was updated'; 15209 15210# check unique-1-a success: 1 15211 15212# check unique-1-b success: 1 15213DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15214UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15215f_int2 = CAST(f_char1 AS SIGNED INT), 15216f_charbig = CONCAT('===',f_char1,'===') 15217WHERE f_charbig = 'was updated'; 15218REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15219SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 15220 FROM t0_template source_tab 15221WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15222 15223# check replace success: 1 15224DELETE FROM t1 15225WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 15226DELETE FROM t1 15227WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 15228f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 15229UPDATE t1 SET f_int2 = f_int1, 15230f_char1 = CAST(f_int1 AS CHAR), 15231f_char2 = CAST(f_int1 AS CHAR), 15232f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 15233WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 15234SET AUTOCOMMIT= 0; 15235INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15236SELECT f_int1, f_int1, '', '', 'was inserted' 15237FROM t0_template source_tab 15238WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15239 15240# check transactions-1 success: 1 15241COMMIT WORK; 15242 15243# check transactions-2 success: 1 15244ROLLBACK WORK; 15245 15246# check transactions-3 success: 1 15247DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15248COMMIT WORK; 15249ROLLBACK WORK; 15250 15251# check transactions-4 success: 1 15252INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15253SELECT f_int1, f_int1, '', '', 'was inserted' 15254FROM t0_template source_tab 15255WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15256 15257# check transactions-5 success: 1 15258ROLLBACK WORK; 15259 15260# check transactions-6 success: 1 15261# INFO: Storage engine used for t1 seems to be transactional. 15262COMMIT; 15263 15264# check transactions-7 success: 1 15265DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15266COMMIT WORK; 15267SET @@session.sql_mode = 'traditional'; 15268Warnings: 15269Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15270SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15271INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15272SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15273'', '', 'was inserted' FROM t0_template 15274WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15275ERROR 22012: Division by 0 15276COMMIT; 15277 15278# check transactions-8 success: 1 15279# INFO: Storage engine used for t1 seems to be able to revert 15280# changes made by the failing statement. 15281SET @@session.sql_mode = ''; 15282Warnings: 15283Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15284SET AUTOCOMMIT= 1; 15285DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15286COMMIT WORK; 15287UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15288 15289# check special-1 success: 1 15290UPDATE t1 SET f_charbig = ''; 15291 15292# check special-2 success: 1 15293UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15294INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15295SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15296WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15297INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15298SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15299'just inserted' FROM t0_template 15300WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15301CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15302BEGIN 15303UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15304f_charbig = 'updated by trigger' 15305 WHERE f_int1 = new.f_int1; 15306END| 15307INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15308SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15309WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15310 15311# check trigger-1 success: 1 15312DROP TRIGGER trg_1; 15313UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15314f_int2 = CAST(f_char1 AS SIGNED INT), 15315f_charbig = 'just inserted' 15316 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15317DELETE FROM t0_aux 15318WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15319INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15320SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15321'just inserted' FROM t0_template 15322WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15323CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15324BEGIN 15325UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15326f_charbig = 'updated by trigger' 15327 WHERE f_int1 = new.f_int1; 15328END| 15329INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15330SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15331WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15332 15333# check trigger-2 success: 1 15334DROP TRIGGER trg_1; 15335UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15336f_int2 = CAST(f_char1 AS SIGNED INT), 15337f_charbig = 'just inserted' 15338 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15339DELETE FROM t0_aux 15340WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15341INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15342SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15343'just inserted' FROM t0_template 15344WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15345CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15346BEGIN 15347UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15348f_charbig = 'updated by trigger' 15349 WHERE f_int1 = new.f_int1; 15350END| 15351UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15352WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15353 15354# check trigger-3 success: 1 15355DROP TRIGGER trg_1; 15356UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15357f_int2 = CAST(f_char1 AS SIGNED INT), 15358f_charbig = 'just inserted' 15359 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15360DELETE FROM t0_aux 15361WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15362INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15363SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15364'just inserted' FROM t0_template 15365WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15366CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15367BEGIN 15368UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15369f_charbig = 'updated by trigger' 15370 WHERE f_int1 = - old.f_int1; 15371END| 15372UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15373WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15374 15375# check trigger-4 success: 1 15376DROP TRIGGER trg_1; 15377UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15378f_int2 = CAST(f_char1 AS SIGNED INT), 15379f_charbig = 'just inserted' 15380 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15381DELETE FROM t0_aux 15382WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15383INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15384SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15385'just inserted' FROM t0_template 15386WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15387CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15388BEGIN 15389UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15390f_charbig = 'updated by trigger' 15391 WHERE f_int1 = new.f_int1; 15392END| 15393UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15394WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15395 15396# check trigger-5 success: 1 15397DROP TRIGGER trg_1; 15398UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15399f_int2 = CAST(f_char1 AS SIGNED INT), 15400f_charbig = 'just inserted' 15401 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15402DELETE FROM t0_aux 15403WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15404INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15405SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15406'just inserted' FROM t0_template 15407WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15408CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15409BEGIN 15410UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15411f_charbig = 'updated by trigger' 15412 WHERE f_int1 = - old.f_int1; 15413END| 15414UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15415WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15416 15417# check trigger-6 success: 1 15418DROP TRIGGER trg_1; 15419UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15420f_int2 = CAST(f_char1 AS SIGNED INT), 15421f_charbig = 'just inserted' 15422 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15423DELETE FROM t0_aux 15424WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15425INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15426SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15427'just inserted' FROM t0_template 15428WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15429CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15430BEGIN 15431UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15432f_charbig = 'updated by trigger' 15433 WHERE f_int1 = - old.f_int1; 15434END| 15435DELETE FROM t0_aux 15436WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15437 15438# check trigger-7 success: 1 15439DROP TRIGGER trg_1; 15440UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15441f_int2 = CAST(f_char1 AS SIGNED INT), 15442f_charbig = 'just inserted' 15443 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15444DELETE FROM t0_aux 15445WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15446INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15447SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15448'just inserted' FROM t0_template 15449WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15450CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15451BEGIN 15452UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15453f_charbig = 'updated by trigger' 15454 WHERE f_int1 = - old.f_int1; 15455END| 15456DELETE FROM t0_aux 15457WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15458 15459# check trigger-8 success: 1 15460DROP TRIGGER trg_1; 15461UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15462f_int2 = CAST(f_char1 AS SIGNED INT), 15463f_charbig = 'just inserted' 15464 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15465DELETE FROM t0_aux 15466WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15467DELETE FROM t1 15468WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15469CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15470BEGIN 15471SET new.f_int1 = old.f_int1 + @max_row, 15472new.f_int2 = old.f_int2 - @max_row, 15473new.f_charbig = '####updated per update trigger####'; 15474END| 15475UPDATE t1 15476SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15477f_charbig = '####updated per update statement itself####'; 15478 15479# check trigger-9 success: 1 15480DROP TRIGGER trg_2; 15481UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15482f_int2 = CAST(f_char1 AS SIGNED INT), 15483f_charbig = CONCAT('===',f_char1,'==='); 15484CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15485BEGIN 15486SET new.f_int1 = new.f_int1 + @max_row, 15487new.f_int2 = new.f_int2 - @max_row, 15488new.f_charbig = '####updated per update trigger####'; 15489END| 15490UPDATE t1 15491SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15492f_charbig = '####updated per update statement itself####'; 15493 15494# check trigger-10 success: 1 15495DROP TRIGGER trg_2; 15496UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15497f_int2 = CAST(f_char1 AS SIGNED INT), 15498f_charbig = CONCAT('===',f_char1,'==='); 15499CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15500BEGIN 15501SET new.f_int1 = @my_max1 + @counter, 15502new.f_int2 = @my_min2 - @counter, 15503new.f_charbig = '####updated per insert trigger####'; 15504SET @counter = @counter + 1; 15505END| 15506SET @counter = 1; 15507SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15508INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15509SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15510CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15511WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15512ORDER BY f_int1; 15513DROP TRIGGER trg_3; 15514 15515# check trigger-11 success: 1 15516DELETE FROM t1 15517WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15518AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15519AND f_charbig = '####updated per insert trigger####'; 15520CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 15521BEGIN 15522SET new.f_int1 = @my_max1 + @counter, 15523new.f_int2 = @my_min2 - @counter, 15524new.f_charbig = '####updated per insert trigger####'; 15525SET @counter = @counter + 1; 15526END| 15527SET @counter = 1; 15528SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 15529INSERT INTO t1 (f_char1, f_char2, f_charbig) 15530SELECT CAST(f_int1 AS CHAR), 15531CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 15532WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 15533ORDER BY f_int1; 15534DROP TRIGGER trg_3; 15535 15536# check trigger-12 success: 1 15537DELETE FROM t1 15538WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 15539AND f_int2 <> CAST(f_char1 AS SIGNED INT) 15540AND f_charbig = '####updated per insert trigger####'; 15541ANALYZE TABLE t1; 15542Table Op Msg_type Msg_text 15543test.t1 analyze status OK 15544CHECK TABLE t1 EXTENDED; 15545Table Op Msg_type Msg_text 15546test.t1 check status OK 15547CHECKSUM TABLE t1 EXTENDED; 15548Table Checksum 15549test.t1 <some_value> 15550OPTIMIZE TABLE t1; 15551Table Op Msg_type Msg_text 15552test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 15553test.t1 optimize status OK 15554# check layout success: 1 15555REPAIR TABLE t1 EXTENDED; 15556Table Op Msg_type Msg_text 15557test.t1 repair status OK 15558# check layout success: 1 15559TRUNCATE t1; 15560 15561# check TRUNCATE success: 1 15562# check layout success: 1 15563# End usability test (inc/partition_check.inc) 15564DROP TABLE t1; 15565CREATE TABLE t1 ( 15566f_int1 INTEGER, 15567f_int2 INTEGER, 15568f_char1 CHAR(20), 15569f_char2 CHAR(20), 15570f_charbig VARCHAR(1000) 15571, UNIQUE INDEX uidx1 (f_int1,f_int2) 15572) 15573PARTITION BY LIST(ABS(MOD(f_int1,2))) 15574SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 15575(PARTITION part1 VALUES IN (0), 15576PARTITION part2 VALUES IN (1), 15577PARTITION part3 VALUES IN (NULL)); 15578INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15579SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15580WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 15581ALTER TABLE t1 MODIFY f_int2 BIGINT; 15582INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15583SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 15584WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 15585# Start usability test (inc/partition_check.inc) 15586create_command 15587SHOW CREATE TABLE t1; 15588Table Create Table 15589t1 CREATE TABLE `t1` ( 15590 `f_int1` int(11) DEFAULT NULL, 15591 `f_int2` bigint(20) DEFAULT NULL, 15592 `f_char1` char(20) DEFAULT NULL, 15593 `f_char2` char(20) DEFAULT NULL, 15594 `f_charbig` varchar(1000) DEFAULT NULL, 15595 UNIQUE KEY `uidx1` (`f_int1`,`f_int2`) 15596) ENGINE=TokuDB DEFAULT CHARSET=latin1 15597/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 15598SUBPARTITION BY KEY (f_int1) 15599SUBPARTITIONS 3 15600(PARTITION part1 VALUES IN (0) ENGINE = TokuDB, 15601 PARTITION part2 VALUES IN (1) ENGINE = TokuDB, 15602 PARTITION part3 VALUES IN (NULL) ENGINE = TokuDB) */ 15603 15604# check prerequisites-1 success: 1 15605# check COUNT(*) success: 1 15606# check MIN/MAX(f_int1) success: 1 15607# check MIN/MAX(f_int2) success: 1 15608INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15609SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 15610CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 15611WHERE f_int1 IN (2,3); 15612ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 15613# check prerequisites-3 success: 1 15614# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 15615INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15616SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15617CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15618WHERE f_int1 IN (2,3); 15619DELETE FROM t1 WHERE f_charbig = 'delete me'; 15620INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15621SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 15622CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 15623WHERE f_int1 IN (2,3); 15624DELETE FROM t1 WHERE f_charbig = 'delete me'; 15625# check read via f_int1 success: 1 15626# check read via f_int2 success: 1 15627 15628# check multiple-1 success: 1 15629DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 15630 15631# check multiple-2 success: 1 15632INSERT INTO t1 SELECT * FROM t0_template 15633WHERE MOD(f_int1,3) = 0; 15634 15635# check multiple-3 success: 1 15636UPDATE t1 SET f_int1 = f_int1 + @max_row 15637WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 15638AND @max_row_div2 + @max_row_div4; 15639 15640# check multiple-4 success: 1 15641DELETE FROM t1 15642WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 15643AND @max_row_div2 + @max_row_div4 + @max_row; 15644 15645# check multiple-5 success: 1 15646SELECT COUNT(*) INTO @try_count FROM t0_template 15647WHERE MOD(f_int1,3) = 0 15648AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15649SELECT COUNT(*) INTO @clash_count 15650FROM t1 INNER JOIN t0_template USING(f_int1) 15651WHERE MOD(f_int1,3) = 0 15652AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15653SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 15654INSERT INTO t1 15655SET f_int1 = @cur_value , f_int2 = @cur_value, 15656f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15657f_charbig = '#SINGLE#'; 15658 15659# check single-1 success: 1 15660SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 15661INSERT INTO t1 15662SET f_int1 = @cur_value , f_int2 = @cur_value, 15663f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 15664f_charbig = '#SINGLE#'; 15665 15666# check single-2 success: 1 15667SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 15668SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 15669UPDATE t1 SET f_int1 = @cur_value2 15670WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 15671 15672# check single-3 success: 1 15673SET @cur_value1= -1; 15674SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 15675UPDATE t1 SET f_int1 = @cur_value1 15676WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 15677 15678# check single-4 success: 1 15679SELECT MAX(f_int1) INTO @cur_value FROM t1; 15680DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 15681 15682# check single-5 success: 1 15683DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 15684 15685# check single-6 success: 1 15686INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 15687 15688# check single-7 success: 1 15689DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 15690DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 15691INSERT t1 SET f_int1 = 0 , f_int2 = 0, 15692f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 15693f_charbig = '#NULL#'; 15694INSERT INTO t1 15695SET f_int1 = NULL , f_int2 = -@max_row, 15696f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 15697f_charbig = '#NULL#'; 15698# check null success: 1 15699 15700# check null-1 success: 1 15701UPDATE t1 SET f_int1 = -@max_row 15702WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15703AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15704 15705# check null-2 success: 1 15706UPDATE t1 SET f_int1 = NULL 15707WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15708AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15709 15710# check null-3 success: 1 15711DELETE FROM t1 15712WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 15713AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 15714 15715# check null-4 success: 1 15716DELETE FROM t1 15717WHERE f_int1 = 0 AND f_int2 = 0 15718AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 15719AND f_charbig = '#NULL#'; 15720INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15721SELECT f_int1, f_int1, '', '', 'was inserted' 15722 FROM t0_template source_tab 15723WHERE MOD(f_int1,3) = 0 15724AND f_int1 BETWEEN @max_row_div2 AND @max_row 15725ON DUPLICATE KEY 15726UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 15727f_int2 = 2 * @max_row + source_tab.f_int1, 15728f_charbig = 'was updated'; 15729 15730# check unique-1-a success: 1 15731 15732# check unique-1-b success: 1 15733DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15734UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15735f_int2 = CAST(f_char1 AS SIGNED INT), 15736f_charbig = CONCAT('===',f_char1,'===') 15737WHERE f_charbig = 'was updated'; 15738REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15739SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 15740 FROM t0_template source_tab 15741WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 15742 15743# check replace success: 1 15744DELETE FROM t1 15745WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 15746DELETE FROM t1 15747WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 15748f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 15749UPDATE t1 SET f_int2 = f_int1, 15750f_char1 = CAST(f_int1 AS CHAR), 15751f_char2 = CAST(f_int1 AS CHAR), 15752f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 15753WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 15754SET AUTOCOMMIT= 0; 15755INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15756SELECT f_int1, f_int1, '', '', 'was inserted' 15757FROM t0_template source_tab 15758WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15759 15760# check transactions-1 success: 1 15761COMMIT WORK; 15762 15763# check transactions-2 success: 1 15764ROLLBACK WORK; 15765 15766# check transactions-3 success: 1 15767DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15768COMMIT WORK; 15769ROLLBACK WORK; 15770 15771# check transactions-4 success: 1 15772INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15773SELECT f_int1, f_int1, '', '', 'was inserted' 15774FROM t0_template source_tab 15775WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15776 15777# check transactions-5 success: 1 15778ROLLBACK WORK; 15779 15780# check transactions-6 success: 1 15781# INFO: Storage engine used for t1 seems to be transactional. 15782COMMIT; 15783 15784# check transactions-7 success: 1 15785DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15786COMMIT WORK; 15787SET @@session.sql_mode = 'traditional'; 15788Warnings: 15789Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15790SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 15791INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 15792SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 15793'', '', 'was inserted' FROM t0_template 15794WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 15795ERROR 22012: Division by 0 15796COMMIT; 15797 15798# check transactions-8 success: 1 15799# INFO: Storage engine used for t1 seems to be able to revert 15800# changes made by the failing statement. 15801SET @@session.sql_mode = ''; 15802Warnings: 15803Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 15804SET AUTOCOMMIT= 1; 15805DELETE FROM t1 WHERE f_charbig = 'was inserted'; 15806COMMIT WORK; 15807UPDATE t1 SET f_charbig = REPEAT('b', 1000); 15808 15809# check special-1 success: 1 15810UPDATE t1 SET f_charbig = ''; 15811 15812# check special-2 success: 1 15813UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 15814INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 15815SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 15816WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15817INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15818SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15819'just inserted' FROM t0_template 15820WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15821CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 15822BEGIN 15823UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15824f_charbig = 'updated by trigger' 15825 WHERE f_int1 = new.f_int1; 15826END| 15827INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15828SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15829WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15830 15831# check trigger-1 success: 1 15832DROP TRIGGER trg_1; 15833UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15834f_int2 = CAST(f_char1 AS SIGNED INT), 15835f_charbig = 'just inserted' 15836 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15837DELETE FROM t0_aux 15838WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15839INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15840SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15841'just inserted' FROM t0_template 15842WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15843CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 15844BEGIN 15845UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15846f_charbig = 'updated by trigger' 15847 WHERE f_int1 = new.f_int1; 15848END| 15849INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15850SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 15851WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15852 15853# check trigger-2 success: 1 15854DROP TRIGGER trg_1; 15855UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15856f_int2 = CAST(f_char1 AS SIGNED INT), 15857f_charbig = 'just inserted' 15858 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15859DELETE FROM t0_aux 15860WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15861INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15862SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15863'just inserted' FROM t0_template 15864WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15865CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15866BEGIN 15867UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15868f_charbig = 'updated by trigger' 15869 WHERE f_int1 = new.f_int1; 15870END| 15871UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15872WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15873 15874# check trigger-3 success: 1 15875DROP TRIGGER trg_1; 15876UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15877f_int2 = CAST(f_char1 AS SIGNED INT), 15878f_charbig = 'just inserted' 15879 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15880DELETE FROM t0_aux 15881WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15882INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15883SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15884'just inserted' FROM t0_template 15885WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15886CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 15887BEGIN 15888UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15889f_charbig = 'updated by trigger' 15890 WHERE f_int1 = - old.f_int1; 15891END| 15892UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15893WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15894 15895# check trigger-4 success: 1 15896DROP TRIGGER trg_1; 15897UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15898f_int2 = CAST(f_char1 AS SIGNED INT), 15899f_charbig = 'just inserted' 15900 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15901DELETE FROM t0_aux 15902WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15903INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15904SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15905'just inserted' FROM t0_template 15906WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15907CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15908BEGIN 15909UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15910f_charbig = 'updated by trigger' 15911 WHERE f_int1 = new.f_int1; 15912END| 15913UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15914WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15915 15916# check trigger-5 success: 1 15917DROP TRIGGER trg_1; 15918UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15919f_int2 = CAST(f_char1 AS SIGNED INT), 15920f_charbig = 'just inserted' 15921 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15922DELETE FROM t0_aux 15923WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15924INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15925SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15926'just inserted' FROM t0_template 15927WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15928CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 15929BEGIN 15930UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15931f_charbig = 'updated by trigger' 15932 WHERE f_int1 = - old.f_int1; 15933END| 15934UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 15935WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15936 15937# check trigger-6 success: 1 15938DROP TRIGGER trg_1; 15939UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15940f_int2 = CAST(f_char1 AS SIGNED INT), 15941f_charbig = 'just inserted' 15942 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15943DELETE FROM t0_aux 15944WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15945INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15946SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15947'just inserted' FROM t0_template 15948WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15949CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 15950BEGIN 15951UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15952f_charbig = 'updated by trigger' 15953 WHERE f_int1 = - old.f_int1; 15954END| 15955DELETE FROM t0_aux 15956WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15957 15958# check trigger-7 success: 1 15959DROP TRIGGER trg_1; 15960UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15961f_int2 = CAST(f_char1 AS SIGNED INT), 15962f_charbig = 'just inserted' 15963 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15964DELETE FROM t0_aux 15965WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15966INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 15967SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 15968'just inserted' FROM t0_template 15969WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15970CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 15971BEGIN 15972UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 15973f_charbig = 'updated by trigger' 15974 WHERE f_int1 = - old.f_int1; 15975END| 15976DELETE FROM t0_aux 15977WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 15978 15979# check trigger-8 success: 1 15980DROP TRIGGER trg_1; 15981UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 15982f_int2 = CAST(f_char1 AS SIGNED INT), 15983f_charbig = 'just inserted' 15984 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 15985DELETE FROM t0_aux 15986WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15987DELETE FROM t1 15988WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 15989CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 15990BEGIN 15991SET new.f_int1 = old.f_int1 + @max_row, 15992new.f_int2 = old.f_int2 - @max_row, 15993new.f_charbig = '####updated per update trigger####'; 15994END| 15995UPDATE t1 15996SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 15997f_charbig = '####updated per update statement itself####'; 15998 15999# check trigger-9 success: 1 16000DROP TRIGGER trg_2; 16001UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16002f_int2 = CAST(f_char1 AS SIGNED INT), 16003f_charbig = CONCAT('===',f_char1,'==='); 16004CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16005BEGIN 16006SET new.f_int1 = new.f_int1 + @max_row, 16007new.f_int2 = new.f_int2 - @max_row, 16008new.f_charbig = '####updated per update trigger####'; 16009END| 16010UPDATE t1 16011SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16012f_charbig = '####updated per update statement itself####'; 16013 16014# check trigger-10 success: 1 16015DROP TRIGGER trg_2; 16016UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16017f_int2 = CAST(f_char1 AS SIGNED INT), 16018f_charbig = CONCAT('===',f_char1,'==='); 16019CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16020BEGIN 16021SET new.f_int1 = @my_max1 + @counter, 16022new.f_int2 = @my_min2 - @counter, 16023new.f_charbig = '####updated per insert trigger####'; 16024SET @counter = @counter + 1; 16025END| 16026SET @counter = 1; 16027SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16028INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16029SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16030CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16031WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16032ORDER BY f_int1; 16033DROP TRIGGER trg_3; 16034 16035# check trigger-11 success: 1 16036DELETE FROM t1 16037WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16038AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16039AND f_charbig = '####updated per insert trigger####'; 16040CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16041BEGIN 16042SET new.f_int1 = @my_max1 + @counter, 16043new.f_int2 = @my_min2 - @counter, 16044new.f_charbig = '####updated per insert trigger####'; 16045SET @counter = @counter + 1; 16046END| 16047SET @counter = 1; 16048SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16049INSERT INTO t1 (f_char1, f_char2, f_charbig) 16050SELECT CAST(f_int1 AS CHAR), 16051CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16052WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16053ORDER BY f_int1; 16054DROP TRIGGER trg_3; 16055 16056# check trigger-12 success: 1 16057DELETE FROM t1 16058WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16059AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16060AND f_charbig = '####updated per insert trigger####'; 16061ANALYZE TABLE t1; 16062Table Op Msg_type Msg_text 16063test.t1 analyze status OK 16064CHECK TABLE t1 EXTENDED; 16065Table Op Msg_type Msg_text 16066test.t1 check status OK 16067CHECKSUM TABLE t1 EXTENDED; 16068Table Checksum 16069test.t1 <some_value> 16070OPTIMIZE TABLE t1; 16071Table Op Msg_type Msg_text 16072test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 16073test.t1 optimize status OK 16074# check layout success: 1 16075REPAIR TABLE t1 EXTENDED; 16076Table Op Msg_type Msg_text 16077test.t1 repair status OK 16078# check layout success: 1 16079TRUNCATE t1; 16080 16081# check TRUNCATE success: 1 16082# check layout success: 1 16083# End usability test (inc/partition_check.inc) 16084DROP TABLE t1; 16085DROP TABLE IF EXISTS t1; 16086CREATE TABLE t1 ( 16087f_int1 INTEGER, 16088f_int2 INTEGER, 16089f_char1 CHAR(20), 16090f_char2 CHAR(20), 16091f_charbig VARCHAR(1000) 16092, UNIQUE INDEX uidx1 (f_int2,f_int1) 16093) 16094PARTITION BY HASH(f_int1) PARTITIONS 2; 16095INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16096SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 16097WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 16098ALTER TABLE t1 MODIFY f_int2 BIGINT; 16099INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16100SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 16101WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 16102# Start usability test (inc/partition_check.inc) 16103create_command 16104SHOW CREATE TABLE t1; 16105Table Create Table 16106t1 CREATE TABLE `t1` ( 16107 `f_int1` int(11) DEFAULT NULL, 16108 `f_int2` bigint(20) DEFAULT NULL, 16109 `f_char1` char(20) DEFAULT NULL, 16110 `f_char2` char(20) DEFAULT NULL, 16111 `f_charbig` varchar(1000) DEFAULT NULL, 16112 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 16113) ENGINE=TokuDB DEFAULT CHARSET=latin1 16114/*!50100 PARTITION BY HASH (f_int1) 16115PARTITIONS 2 */ 16116 16117# check prerequisites-1 success: 1 16118# check COUNT(*) success: 1 16119# check MIN/MAX(f_int1) success: 1 16120# check MIN/MAX(f_int2) success: 1 16121INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16122SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16123CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16124WHERE f_int1 IN (2,3); 16125ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 16126# check prerequisites-3 success: 1 16127# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 16128INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16129SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16130CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16131WHERE f_int1 IN (2,3); 16132DELETE FROM t1 WHERE f_charbig = 'delete me'; 16133INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16134SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16135CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16136WHERE f_int1 IN (2,3); 16137DELETE FROM t1 WHERE f_charbig = 'delete me'; 16138# check read via f_int1 success: 1 16139# check read via f_int2 success: 1 16140 16141# check multiple-1 success: 1 16142DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16143 16144# check multiple-2 success: 1 16145INSERT INTO t1 SELECT * FROM t0_template 16146WHERE MOD(f_int1,3) = 0; 16147 16148# check multiple-3 success: 1 16149UPDATE t1 SET f_int1 = f_int1 + @max_row 16150WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16151AND @max_row_div2 + @max_row_div4; 16152 16153# check multiple-4 success: 1 16154DELETE FROM t1 16155WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16156AND @max_row_div2 + @max_row_div4 + @max_row; 16157 16158# check multiple-5 success: 1 16159SELECT COUNT(*) INTO @try_count FROM t0_template 16160WHERE MOD(f_int1,3) = 0 16161AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16162SELECT COUNT(*) INTO @clash_count 16163FROM t1 INNER JOIN t0_template USING(f_int1) 16164WHERE MOD(f_int1,3) = 0 16165AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16166SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16167INSERT INTO t1 16168SET f_int1 = @cur_value , f_int2 = @cur_value, 16169f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16170f_charbig = '#SINGLE#'; 16171 16172# check single-1 success: 1 16173SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16174INSERT INTO t1 16175SET f_int1 = @cur_value , f_int2 = @cur_value, 16176f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16177f_charbig = '#SINGLE#'; 16178 16179# check single-2 success: 1 16180SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16181SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16182UPDATE t1 SET f_int1 = @cur_value2 16183WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16184 16185# check single-3 success: 1 16186SET @cur_value1= -1; 16187SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16188UPDATE t1 SET f_int1 = @cur_value1 16189WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16190 16191# check single-4 success: 1 16192SELECT MAX(f_int1) INTO @cur_value FROM t1; 16193DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16194 16195# check single-5 success: 1 16196DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16197 16198# check single-6 success: 1 16199INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16200 16201# check single-7 success: 1 16202DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 16203DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16204INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16205f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16206f_charbig = '#NULL#'; 16207INSERT INTO t1 16208SET f_int1 = NULL , f_int2 = -@max_row, 16209f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 16210f_charbig = '#NULL#'; 16211# check null success: 1 16212 16213# check null-1 success: 1 16214UPDATE t1 SET f_int1 = -@max_row 16215WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16216AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16217 16218# check null-2 success: 1 16219UPDATE t1 SET f_int1 = NULL 16220WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16221AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16222 16223# check null-3 success: 1 16224DELETE FROM t1 16225WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16226AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16227 16228# check null-4 success: 1 16229DELETE FROM t1 16230WHERE f_int1 = 0 AND f_int2 = 0 16231AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16232AND f_charbig = '#NULL#'; 16233INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16234SELECT f_int1, f_int1, '', '', 'was inserted' 16235 FROM t0_template source_tab 16236WHERE MOD(f_int1,3) = 0 16237AND f_int1 BETWEEN @max_row_div2 AND @max_row 16238ON DUPLICATE KEY 16239UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 16240f_int2 = 2 * @max_row + source_tab.f_int1, 16241f_charbig = 'was updated'; 16242 16243# check unique-1-a success: 1 16244 16245# check unique-1-b success: 1 16246DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16247UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16248f_int2 = CAST(f_char1 AS SIGNED INT), 16249f_charbig = CONCAT('===',f_char1,'===') 16250WHERE f_charbig = 'was updated'; 16251REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16252SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 16253 FROM t0_template source_tab 16254WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16255 16256# check replace success: 1 16257DELETE FROM t1 16258WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 16259DELETE FROM t1 16260WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 16261f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 16262UPDATE t1 SET f_int2 = f_int1, 16263f_char1 = CAST(f_int1 AS CHAR), 16264f_char2 = CAST(f_int1 AS CHAR), 16265f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 16266WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 16267SET AUTOCOMMIT= 0; 16268INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16269SELECT f_int1, f_int1, '', '', 'was inserted' 16270FROM t0_template source_tab 16271WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16272 16273# check transactions-1 success: 1 16274COMMIT WORK; 16275 16276# check transactions-2 success: 1 16277ROLLBACK WORK; 16278 16279# check transactions-3 success: 1 16280DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16281COMMIT WORK; 16282ROLLBACK WORK; 16283 16284# check transactions-4 success: 1 16285INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16286SELECT f_int1, f_int1, '', '', 'was inserted' 16287FROM t0_template source_tab 16288WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16289 16290# check transactions-5 success: 1 16291ROLLBACK WORK; 16292 16293# check transactions-6 success: 1 16294# INFO: Storage engine used for t1 seems to be transactional. 16295COMMIT; 16296 16297# check transactions-7 success: 1 16298DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16299COMMIT WORK; 16300SET @@session.sql_mode = 'traditional'; 16301Warnings: 16302Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16303SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16304INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16305SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16306'', '', 'was inserted' FROM t0_template 16307WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16308ERROR 22012: Division by 0 16309COMMIT; 16310 16311# check transactions-8 success: 1 16312# INFO: Storage engine used for t1 seems to be able to revert 16313# changes made by the failing statement. 16314SET @@session.sql_mode = ''; 16315Warnings: 16316Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16317SET AUTOCOMMIT= 1; 16318DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16319COMMIT WORK; 16320UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16321 16322# check special-1 success: 1 16323UPDATE t1 SET f_charbig = ''; 16324 16325# check special-2 success: 1 16326UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16327INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16328SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16329WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16330INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16331SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16332'just inserted' FROM t0_template 16333WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16334CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16335BEGIN 16336UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16337f_charbig = 'updated by trigger' 16338 WHERE f_int1 = new.f_int1; 16339END| 16340INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16341SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16342WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16343 16344# check trigger-1 success: 1 16345DROP TRIGGER trg_1; 16346UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16347f_int2 = CAST(f_char1 AS SIGNED INT), 16348f_charbig = 'just inserted' 16349 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16350DELETE FROM t0_aux 16351WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16352INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16353SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16354'just inserted' FROM t0_template 16355WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16356CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16357BEGIN 16358UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16359f_charbig = 'updated by trigger' 16360 WHERE f_int1 = new.f_int1; 16361END| 16362INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16363SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16364WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16365 16366# check trigger-2 success: 1 16367DROP TRIGGER trg_1; 16368UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16369f_int2 = CAST(f_char1 AS SIGNED INT), 16370f_charbig = 'just inserted' 16371 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16372DELETE FROM t0_aux 16373WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16374INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16375SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16376'just inserted' FROM t0_template 16377WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16378CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16379BEGIN 16380UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16381f_charbig = 'updated by trigger' 16382 WHERE f_int1 = new.f_int1; 16383END| 16384UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16385WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16386 16387# check trigger-3 success: 1 16388DROP TRIGGER trg_1; 16389UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16390f_int2 = CAST(f_char1 AS SIGNED INT), 16391f_charbig = 'just inserted' 16392 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16393DELETE FROM t0_aux 16394WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16395INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16396SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16397'just inserted' FROM t0_template 16398WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16399CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16400BEGIN 16401UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16402f_charbig = 'updated by trigger' 16403 WHERE f_int1 = - old.f_int1; 16404END| 16405UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16406WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16407 16408# check trigger-4 success: 1 16409DROP TRIGGER trg_1; 16410UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16411f_int2 = CAST(f_char1 AS SIGNED INT), 16412f_charbig = 'just inserted' 16413 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16414DELETE FROM t0_aux 16415WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16416INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16417SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16418'just inserted' FROM t0_template 16419WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16420CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16421BEGIN 16422UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16423f_charbig = 'updated by trigger' 16424 WHERE f_int1 = new.f_int1; 16425END| 16426UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16427WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16428 16429# check trigger-5 success: 1 16430DROP TRIGGER trg_1; 16431UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16432f_int2 = CAST(f_char1 AS SIGNED INT), 16433f_charbig = 'just inserted' 16434 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16435DELETE FROM t0_aux 16436WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16437INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16438SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16439'just inserted' FROM t0_template 16440WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16441CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16442BEGIN 16443UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16444f_charbig = 'updated by trigger' 16445 WHERE f_int1 = - old.f_int1; 16446END| 16447UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16448WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16449 16450# check trigger-6 success: 1 16451DROP TRIGGER trg_1; 16452UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16453f_int2 = CAST(f_char1 AS SIGNED INT), 16454f_charbig = 'just inserted' 16455 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16456DELETE FROM t0_aux 16457WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16458INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16459SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16460'just inserted' FROM t0_template 16461WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16462CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16463BEGIN 16464UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16465f_charbig = 'updated by trigger' 16466 WHERE f_int1 = - old.f_int1; 16467END| 16468DELETE FROM t0_aux 16469WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16470 16471# check trigger-7 success: 1 16472DROP TRIGGER trg_1; 16473UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16474f_int2 = CAST(f_char1 AS SIGNED INT), 16475f_charbig = 'just inserted' 16476 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16477DELETE FROM t0_aux 16478WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16479INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16480SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16481'just inserted' FROM t0_template 16482WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16483CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16484BEGIN 16485UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16486f_charbig = 'updated by trigger' 16487 WHERE f_int1 = - old.f_int1; 16488END| 16489DELETE FROM t0_aux 16490WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16491 16492# check trigger-8 success: 1 16493DROP TRIGGER trg_1; 16494UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16495f_int2 = CAST(f_char1 AS SIGNED INT), 16496f_charbig = 'just inserted' 16497 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16498DELETE FROM t0_aux 16499WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16500DELETE FROM t1 16501WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16502CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16503BEGIN 16504SET new.f_int1 = old.f_int1 + @max_row, 16505new.f_int2 = old.f_int2 - @max_row, 16506new.f_charbig = '####updated per update trigger####'; 16507END| 16508UPDATE t1 16509SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16510f_charbig = '####updated per update statement itself####'; 16511 16512# check trigger-9 success: 1 16513DROP TRIGGER trg_2; 16514UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16515f_int2 = CAST(f_char1 AS SIGNED INT), 16516f_charbig = CONCAT('===',f_char1,'==='); 16517CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 16518BEGIN 16519SET new.f_int1 = new.f_int1 + @max_row, 16520new.f_int2 = new.f_int2 - @max_row, 16521new.f_charbig = '####updated per update trigger####'; 16522END| 16523UPDATE t1 16524SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 16525f_charbig = '####updated per update statement itself####'; 16526 16527# check trigger-10 success: 1 16528DROP TRIGGER trg_2; 16529UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16530f_int2 = CAST(f_char1 AS SIGNED INT), 16531f_charbig = CONCAT('===',f_char1,'==='); 16532CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16533BEGIN 16534SET new.f_int1 = @my_max1 + @counter, 16535new.f_int2 = @my_min2 - @counter, 16536new.f_charbig = '####updated per insert trigger####'; 16537SET @counter = @counter + 1; 16538END| 16539SET @counter = 1; 16540SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16541INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16542SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16543CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16544WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16545ORDER BY f_int1; 16546DROP TRIGGER trg_3; 16547 16548# check trigger-11 success: 1 16549DELETE FROM t1 16550WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16551AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16552AND f_charbig = '####updated per insert trigger####'; 16553CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 16554BEGIN 16555SET new.f_int1 = @my_max1 + @counter, 16556new.f_int2 = @my_min2 - @counter, 16557new.f_charbig = '####updated per insert trigger####'; 16558SET @counter = @counter + 1; 16559END| 16560SET @counter = 1; 16561SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 16562INSERT INTO t1 (f_char1, f_char2, f_charbig) 16563SELECT CAST(f_int1 AS CHAR), 16564CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 16565WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 16566ORDER BY f_int1; 16567DROP TRIGGER trg_3; 16568 16569# check trigger-12 success: 1 16570DELETE FROM t1 16571WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 16572AND f_int2 <> CAST(f_char1 AS SIGNED INT) 16573AND f_charbig = '####updated per insert trigger####'; 16574ANALYZE TABLE t1; 16575Table Op Msg_type Msg_text 16576test.t1 analyze status OK 16577CHECK TABLE t1 EXTENDED; 16578Table Op Msg_type Msg_text 16579test.t1 check status OK 16580CHECKSUM TABLE t1 EXTENDED; 16581Table Checksum 16582test.t1 <some_value> 16583OPTIMIZE TABLE t1; 16584Table Op Msg_type Msg_text 16585test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 16586test.t1 optimize status OK 16587# check layout success: 1 16588REPAIR TABLE t1 EXTENDED; 16589Table Op Msg_type Msg_text 16590test.t1 repair status OK 16591# check layout success: 1 16592TRUNCATE t1; 16593 16594# check TRUNCATE success: 1 16595# check layout success: 1 16596# End usability test (inc/partition_check.inc) 16597DROP TABLE t1; 16598CREATE TABLE t1 ( 16599f_int1 INTEGER, 16600f_int2 INTEGER, 16601f_char1 CHAR(20), 16602f_char2 CHAR(20), 16603f_charbig VARCHAR(1000) 16604, UNIQUE INDEX uidx1 (f_int2,f_int1) 16605) 16606PARTITION BY KEY(f_int1) PARTITIONS 5; 16607INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16608SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 16609WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 16610ALTER TABLE t1 MODIFY f_int2 BIGINT; 16611INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16612SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 16613WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 16614# Start usability test (inc/partition_check.inc) 16615create_command 16616SHOW CREATE TABLE t1; 16617Table Create Table 16618t1 CREATE TABLE `t1` ( 16619 `f_int1` int(11) DEFAULT NULL, 16620 `f_int2` bigint(20) DEFAULT NULL, 16621 `f_char1` char(20) DEFAULT NULL, 16622 `f_char2` char(20) DEFAULT NULL, 16623 `f_charbig` varchar(1000) DEFAULT NULL, 16624 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 16625) ENGINE=TokuDB DEFAULT CHARSET=latin1 16626/*!50100 PARTITION BY KEY (f_int1) 16627PARTITIONS 5 */ 16628 16629# check prerequisites-1 success: 1 16630# check COUNT(*) success: 1 16631# check MIN/MAX(f_int1) success: 1 16632# check MIN/MAX(f_int2) success: 1 16633INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16634SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 16635CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 16636WHERE f_int1 IN (2,3); 16637ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 16638# check prerequisites-3 success: 1 16639# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 16640INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16641SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16642CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16643WHERE f_int1 IN (2,3); 16644DELETE FROM t1 WHERE f_charbig = 'delete me'; 16645INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16646SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 16647CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 16648WHERE f_int1 IN (2,3); 16649DELETE FROM t1 WHERE f_charbig = 'delete me'; 16650# check read via f_int1 success: 1 16651# check read via f_int2 success: 1 16652 16653# check multiple-1 success: 1 16654DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 16655 16656# check multiple-2 success: 1 16657INSERT INTO t1 SELECT * FROM t0_template 16658WHERE MOD(f_int1,3) = 0; 16659 16660# check multiple-3 success: 1 16661UPDATE t1 SET f_int1 = f_int1 + @max_row 16662WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 16663AND @max_row_div2 + @max_row_div4; 16664 16665# check multiple-4 success: 1 16666DELETE FROM t1 16667WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 16668AND @max_row_div2 + @max_row_div4 + @max_row; 16669 16670# check multiple-5 success: 1 16671SELECT COUNT(*) INTO @try_count FROM t0_template 16672WHERE MOD(f_int1,3) = 0 16673AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16674SELECT COUNT(*) INTO @clash_count 16675FROM t1 INNER JOIN t0_template USING(f_int1) 16676WHERE MOD(f_int1,3) = 0 16677AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16678SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 16679INSERT INTO t1 16680SET f_int1 = @cur_value , f_int2 = @cur_value, 16681f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16682f_charbig = '#SINGLE#'; 16683 16684# check single-1 success: 1 16685SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 16686INSERT INTO t1 16687SET f_int1 = @cur_value , f_int2 = @cur_value, 16688f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 16689f_charbig = '#SINGLE#'; 16690 16691# check single-2 success: 1 16692SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 16693SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 16694UPDATE t1 SET f_int1 = @cur_value2 16695WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 16696 16697# check single-3 success: 1 16698SET @cur_value1= -1; 16699SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 16700UPDATE t1 SET f_int1 = @cur_value1 16701WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 16702 16703# check single-4 success: 1 16704SELECT MAX(f_int1) INTO @cur_value FROM t1; 16705DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 16706 16707# check single-5 success: 1 16708DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 16709 16710# check single-6 success: 1 16711INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 16712 16713# check single-7 success: 1 16714DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 16715DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 16716INSERT t1 SET f_int1 = 0 , f_int2 = 0, 16717f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 16718f_charbig = '#NULL#'; 16719INSERT INTO t1 16720SET f_int1 = NULL , f_int2 = -@max_row, 16721f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 16722f_charbig = '#NULL#'; 16723# check null success: 1 16724 16725# check null-1 success: 1 16726UPDATE t1 SET f_int1 = -@max_row 16727WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16728AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16729 16730# check null-2 success: 1 16731UPDATE t1 SET f_int1 = NULL 16732WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16733AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16734 16735# check null-3 success: 1 16736DELETE FROM t1 16737WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 16738AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 16739 16740# check null-4 success: 1 16741DELETE FROM t1 16742WHERE f_int1 = 0 AND f_int2 = 0 16743AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 16744AND f_charbig = '#NULL#'; 16745INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16746SELECT f_int1, f_int1, '', '', 'was inserted' 16747 FROM t0_template source_tab 16748WHERE MOD(f_int1,3) = 0 16749AND f_int1 BETWEEN @max_row_div2 AND @max_row 16750ON DUPLICATE KEY 16751UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 16752f_int2 = 2 * @max_row + source_tab.f_int1, 16753f_charbig = 'was updated'; 16754 16755# check unique-1-a success: 1 16756 16757# check unique-1-b success: 1 16758DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16759UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16760f_int2 = CAST(f_char1 AS SIGNED INT), 16761f_charbig = CONCAT('===',f_char1,'===') 16762WHERE f_charbig = 'was updated'; 16763REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16764SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 16765 FROM t0_template source_tab 16766WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 16767 16768# check replace success: 1 16769DELETE FROM t1 16770WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 16771DELETE FROM t1 16772WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 16773f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 16774UPDATE t1 SET f_int2 = f_int1, 16775f_char1 = CAST(f_int1 AS CHAR), 16776f_char2 = CAST(f_int1 AS CHAR), 16777f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 16778WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 16779SET AUTOCOMMIT= 0; 16780INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16781SELECT f_int1, f_int1, '', '', 'was inserted' 16782FROM t0_template source_tab 16783WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16784 16785# check transactions-1 success: 1 16786COMMIT WORK; 16787 16788# check transactions-2 success: 1 16789ROLLBACK WORK; 16790 16791# check transactions-3 success: 1 16792DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16793COMMIT WORK; 16794ROLLBACK WORK; 16795 16796# check transactions-4 success: 1 16797INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16798SELECT f_int1, f_int1, '', '', 'was inserted' 16799FROM t0_template source_tab 16800WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16801 16802# check transactions-5 success: 1 16803ROLLBACK WORK; 16804 16805# check transactions-6 success: 1 16806# INFO: Storage engine used for t1 seems to be transactional. 16807COMMIT; 16808 16809# check transactions-7 success: 1 16810DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16811COMMIT WORK; 16812SET @@session.sql_mode = 'traditional'; 16813Warnings: 16814Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16815SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 16816INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 16817SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 16818'', '', 'was inserted' FROM t0_template 16819WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 16820ERROR 22012: Division by 0 16821COMMIT; 16822 16823# check transactions-8 success: 1 16824# INFO: Storage engine used for t1 seems to be able to revert 16825# changes made by the failing statement. 16826SET @@session.sql_mode = ''; 16827Warnings: 16828Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 16829SET AUTOCOMMIT= 1; 16830DELETE FROM t1 WHERE f_charbig = 'was inserted'; 16831COMMIT WORK; 16832UPDATE t1 SET f_charbig = REPEAT('b', 1000); 16833 16834# check special-1 success: 1 16835UPDATE t1 SET f_charbig = ''; 16836 16837# check special-2 success: 1 16838UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 16839INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 16840SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 16841WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16842INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16843SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16844'just inserted' FROM t0_template 16845WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16846CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 16847BEGIN 16848UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16849f_charbig = 'updated by trigger' 16850 WHERE f_int1 = new.f_int1; 16851END| 16852INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16853SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16854WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16855 16856# check trigger-1 success: 1 16857DROP TRIGGER trg_1; 16858UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16859f_int2 = CAST(f_char1 AS SIGNED INT), 16860f_charbig = 'just inserted' 16861 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16862DELETE FROM t0_aux 16863WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16864INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16865SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16866'just inserted' FROM t0_template 16867WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16868CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 16869BEGIN 16870UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16871f_charbig = 'updated by trigger' 16872 WHERE f_int1 = new.f_int1; 16873END| 16874INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16875SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 16876WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16877 16878# check trigger-2 success: 1 16879DROP TRIGGER trg_1; 16880UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16881f_int2 = CAST(f_char1 AS SIGNED INT), 16882f_charbig = 'just inserted' 16883 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16884DELETE FROM t0_aux 16885WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16886INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16887SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16888'just inserted' FROM t0_template 16889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16890CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16891BEGIN 16892UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16893f_charbig = 'updated by trigger' 16894 WHERE f_int1 = new.f_int1; 16895END| 16896UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16897WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16898 16899# check trigger-3 success: 1 16900DROP TRIGGER trg_1; 16901UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16902f_int2 = CAST(f_char1 AS SIGNED INT), 16903f_charbig = 'just inserted' 16904 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16905DELETE FROM t0_aux 16906WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16907INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16908SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16909'just inserted' FROM t0_template 16910WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16911CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 16912BEGIN 16913UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16914f_charbig = 'updated by trigger' 16915 WHERE f_int1 = - old.f_int1; 16916END| 16917UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16918WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16919 16920# check trigger-4 success: 1 16921DROP TRIGGER trg_1; 16922UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16923f_int2 = CAST(f_char1 AS SIGNED INT), 16924f_charbig = 'just inserted' 16925 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16926DELETE FROM t0_aux 16927WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16928INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16929SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16930'just inserted' FROM t0_template 16931WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16932CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16933BEGIN 16934UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16935f_charbig = 'updated by trigger' 16936 WHERE f_int1 = new.f_int1; 16937END| 16938UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16939WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16940 16941# check trigger-5 success: 1 16942DROP TRIGGER trg_1; 16943UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16944f_int2 = CAST(f_char1 AS SIGNED INT), 16945f_charbig = 'just inserted' 16946 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16947DELETE FROM t0_aux 16948WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16949INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16950SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16951'just inserted' FROM t0_template 16952WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16953CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 16954BEGIN 16955UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16956f_charbig = 'updated by trigger' 16957 WHERE f_int1 = - old.f_int1; 16958END| 16959UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 16960WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16961 16962# check trigger-6 success: 1 16963DROP TRIGGER trg_1; 16964UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16965f_int2 = CAST(f_char1 AS SIGNED INT), 16966f_charbig = 'just inserted' 16967 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16968DELETE FROM t0_aux 16969WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16970INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16971SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16972'just inserted' FROM t0_template 16973WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16974CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 16975BEGIN 16976UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16977f_charbig = 'updated by trigger' 16978 WHERE f_int1 = - old.f_int1; 16979END| 16980DELETE FROM t0_aux 16981WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 16982 16983# check trigger-7 success: 1 16984DROP TRIGGER trg_1; 16985UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 16986f_int2 = CAST(f_char1 AS SIGNED INT), 16987f_charbig = 'just inserted' 16988 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 16989DELETE FROM t0_aux 16990WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16991INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 16992SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 16993'just inserted' FROM t0_template 16994WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 16995CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 16996BEGIN 16997UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 16998f_charbig = 'updated by trigger' 16999 WHERE f_int1 = - old.f_int1; 17000END| 17001DELETE FROM t0_aux 17002WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17003 17004# check trigger-8 success: 1 17005DROP TRIGGER trg_1; 17006UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17007f_int2 = CAST(f_char1 AS SIGNED INT), 17008f_charbig = 'just inserted' 17009 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17010DELETE FROM t0_aux 17011WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17012DELETE FROM t1 17013WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17014CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17015BEGIN 17016SET new.f_int1 = old.f_int1 + @max_row, 17017new.f_int2 = old.f_int2 - @max_row, 17018new.f_charbig = '####updated per update trigger####'; 17019END| 17020UPDATE t1 17021SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17022f_charbig = '####updated per update statement itself####'; 17023 17024# check trigger-9 success: 1 17025DROP TRIGGER trg_2; 17026UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17027f_int2 = CAST(f_char1 AS SIGNED INT), 17028f_charbig = CONCAT('===',f_char1,'==='); 17029CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17030BEGIN 17031SET new.f_int1 = new.f_int1 + @max_row, 17032new.f_int2 = new.f_int2 - @max_row, 17033new.f_charbig = '####updated per update trigger####'; 17034END| 17035UPDATE t1 17036SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17037f_charbig = '####updated per update statement itself####'; 17038 17039# check trigger-10 success: 1 17040DROP TRIGGER trg_2; 17041UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17042f_int2 = CAST(f_char1 AS SIGNED INT), 17043f_charbig = CONCAT('===',f_char1,'==='); 17044CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17045BEGIN 17046SET new.f_int1 = @my_max1 + @counter, 17047new.f_int2 = @my_min2 - @counter, 17048new.f_charbig = '####updated per insert trigger####'; 17049SET @counter = @counter + 1; 17050END| 17051SET @counter = 1; 17052SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17053INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17054SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17055CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17056WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17057ORDER BY f_int1; 17058DROP TRIGGER trg_3; 17059 17060# check trigger-11 success: 1 17061DELETE FROM t1 17062WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17063AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17064AND f_charbig = '####updated per insert trigger####'; 17065CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17066BEGIN 17067SET new.f_int1 = @my_max1 + @counter, 17068new.f_int2 = @my_min2 - @counter, 17069new.f_charbig = '####updated per insert trigger####'; 17070SET @counter = @counter + 1; 17071END| 17072SET @counter = 1; 17073SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17074INSERT INTO t1 (f_char1, f_char2, f_charbig) 17075SELECT CAST(f_int1 AS CHAR), 17076CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17077WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17078ORDER BY f_int1; 17079DROP TRIGGER trg_3; 17080 17081# check trigger-12 success: 1 17082DELETE FROM t1 17083WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17084AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17085AND f_charbig = '####updated per insert trigger####'; 17086ANALYZE TABLE t1; 17087Table Op Msg_type Msg_text 17088test.t1 analyze status OK 17089CHECK TABLE t1 EXTENDED; 17090Table Op Msg_type Msg_text 17091test.t1 check status OK 17092CHECKSUM TABLE t1 EXTENDED; 17093Table Checksum 17094test.t1 <some_value> 17095OPTIMIZE TABLE t1; 17096Table Op Msg_type Msg_text 17097test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 17098test.t1 optimize status OK 17099# check layout success: 1 17100REPAIR TABLE t1 EXTENDED; 17101Table Op Msg_type Msg_text 17102test.t1 repair status OK 17103# check layout success: 1 17104TRUNCATE t1; 17105 17106# check TRUNCATE success: 1 17107# check layout success: 1 17108# End usability test (inc/partition_check.inc) 17109DROP TABLE t1; 17110CREATE TABLE t1 ( 17111f_int1 INTEGER, 17112f_int2 INTEGER, 17113f_char1 CHAR(20), 17114f_char2 CHAR(20), 17115f_charbig VARCHAR(1000) 17116, UNIQUE INDEX uidx1 (f_int2,f_int1) 17117) 17118PARTITION BY LIST(MOD(f_int1,4)) 17119(PARTITION part_3 VALUES IN (-3), 17120PARTITION part_2 VALUES IN (-2), 17121PARTITION part_1 VALUES IN (-1), 17122PARTITION part_N VALUES IN (NULL), 17123PARTITION part0 VALUES IN (0), 17124PARTITION part1 VALUES IN (1), 17125PARTITION part2 VALUES IN (2), 17126PARTITION part3 VALUES IN (3)); 17127INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17128SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17129WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 17130ALTER TABLE t1 MODIFY f_int2 BIGINT; 17131INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17132SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17133WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 17134# Start usability test (inc/partition_check.inc) 17135create_command 17136SHOW CREATE TABLE t1; 17137Table Create Table 17138t1 CREATE TABLE `t1` ( 17139 `f_int1` int(11) DEFAULT NULL, 17140 `f_int2` bigint(20) DEFAULT NULL, 17141 `f_char1` char(20) DEFAULT NULL, 17142 `f_char2` char(20) DEFAULT NULL, 17143 `f_charbig` varchar(1000) DEFAULT NULL, 17144 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 17145) ENGINE=TokuDB DEFAULT CHARSET=latin1 17146/*!50100 PARTITION BY LIST (MOD(f_int1,4)) 17147(PARTITION part_3 VALUES IN (-3) ENGINE = TokuDB, 17148 PARTITION part_2 VALUES IN (-2) ENGINE = TokuDB, 17149 PARTITION part_1 VALUES IN (-1) ENGINE = TokuDB, 17150 PARTITION part_N VALUES IN (NULL) ENGINE = TokuDB, 17151 PARTITION part0 VALUES IN (0) ENGINE = TokuDB, 17152 PARTITION part1 VALUES IN (1) ENGINE = TokuDB, 17153 PARTITION part2 VALUES IN (2) ENGINE = TokuDB, 17154 PARTITION part3 VALUES IN (3) ENGINE = TokuDB) */ 17155 17156# check prerequisites-1 success: 1 17157# check COUNT(*) success: 1 17158# check MIN/MAX(f_int1) success: 1 17159# check MIN/MAX(f_int2) success: 1 17160INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17161SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17162CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17163WHERE f_int1 IN (2,3); 17164ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 17165# check prerequisites-3 success: 1 17166# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 17167INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17168SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17169CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17170WHERE f_int1 IN (2,3); 17171DELETE FROM t1 WHERE f_charbig = 'delete me'; 17172INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17173SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17174CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17175WHERE f_int1 IN (2,3); 17176DELETE FROM t1 WHERE f_charbig = 'delete me'; 17177# check read via f_int1 success: 1 17178# check read via f_int2 success: 1 17179 17180# check multiple-1 success: 1 17181DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 17182 17183# check multiple-2 success: 1 17184INSERT INTO t1 SELECT * FROM t0_template 17185WHERE MOD(f_int1,3) = 0; 17186 17187# check multiple-3 success: 1 17188UPDATE t1 SET f_int1 = f_int1 + @max_row 17189WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 17190AND @max_row_div2 + @max_row_div4; 17191 17192# check multiple-4 success: 1 17193DELETE FROM t1 17194WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 17195AND @max_row_div2 + @max_row_div4 + @max_row; 17196 17197# check multiple-5 success: 1 17198SELECT COUNT(*) INTO @try_count FROM t0_template 17199WHERE MOD(f_int1,3) = 0 17200AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17201SELECT COUNT(*) INTO @clash_count 17202FROM t1 INNER JOIN t0_template USING(f_int1) 17203WHERE MOD(f_int1,3) = 0 17204AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17205SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 17206INSERT INTO t1 17207SET f_int1 = @cur_value , f_int2 = @cur_value, 17208f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17209f_charbig = '#SINGLE#'; 17210 17211# check single-1 success: 1 17212SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 17213INSERT INTO t1 17214SET f_int1 = @cur_value , f_int2 = @cur_value, 17215f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17216f_charbig = '#SINGLE#'; 17217 17218# check single-2 success: 1 17219SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17220SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17221UPDATE t1 SET f_int1 = @cur_value2 17222WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17223 17224# check single-3 success: 1 17225SET @cur_value1= -1; 17226SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17227UPDATE t1 SET f_int1 = @cur_value1 17228WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17229 17230# check single-4 success: 1 17231SELECT MAX(f_int1) INTO @cur_value FROM t1; 17232DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17233 17234# check single-5 success: 1 17235DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17236 17237# check single-6 success: 1 17238INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17239 17240# check single-7 success: 1 17241DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 17242DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17243INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17244f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17245f_charbig = '#NULL#'; 17246INSERT INTO t1 17247SET f_int1 = NULL , f_int2 = -@max_row, 17248f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17249f_charbig = '#NULL#'; 17250# check null success: 1 17251 17252# check null-1 success: 1 17253UPDATE t1 SET f_int1 = -@max_row 17254WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17255AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17256 17257# check null-2 success: 1 17258UPDATE t1 SET f_int1 = NULL 17259WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17260AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17261 17262# check null-3 success: 1 17263DELETE FROM t1 17264WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17265AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17266 17267# check null-4 success: 1 17268DELETE FROM t1 17269WHERE f_int1 = 0 AND f_int2 = 0 17270AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17271AND f_charbig = '#NULL#'; 17272INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17273SELECT f_int1, f_int1, '', '', 'was inserted' 17274 FROM t0_template source_tab 17275WHERE MOD(f_int1,3) = 0 17276AND f_int1 BETWEEN @max_row_div2 AND @max_row 17277ON DUPLICATE KEY 17278UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17279f_int2 = 2 * @max_row + source_tab.f_int1, 17280f_charbig = 'was updated'; 17281 17282# check unique-1-a success: 1 17283 17284# check unique-1-b success: 1 17285DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17286UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17287f_int2 = CAST(f_char1 AS SIGNED INT), 17288f_charbig = CONCAT('===',f_char1,'===') 17289WHERE f_charbig = 'was updated'; 17290REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17291SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17292 FROM t0_template source_tab 17293WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17294 17295# check replace success: 1 17296DELETE FROM t1 17297WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17298DELETE FROM t1 17299WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17300f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17301UPDATE t1 SET f_int2 = f_int1, 17302f_char1 = CAST(f_int1 AS CHAR), 17303f_char2 = CAST(f_int1 AS CHAR), 17304f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17305WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17306SET AUTOCOMMIT= 0; 17307INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17308SELECT f_int1, f_int1, '', '', 'was inserted' 17309FROM t0_template source_tab 17310WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17311 17312# check transactions-1 success: 1 17313COMMIT WORK; 17314 17315# check transactions-2 success: 1 17316ROLLBACK WORK; 17317 17318# check transactions-3 success: 1 17319DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17320COMMIT WORK; 17321ROLLBACK WORK; 17322 17323# check transactions-4 success: 1 17324INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17325SELECT f_int1, f_int1, '', '', 'was inserted' 17326FROM t0_template source_tab 17327WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17328 17329# check transactions-5 success: 1 17330ROLLBACK WORK; 17331 17332# check transactions-6 success: 1 17333# INFO: Storage engine used for t1 seems to be transactional. 17334COMMIT; 17335 17336# check transactions-7 success: 1 17337DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17338COMMIT WORK; 17339SET @@session.sql_mode = 'traditional'; 17340Warnings: 17341Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17342SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17343INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17344SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17345'', '', 'was inserted' FROM t0_template 17346WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17347ERROR 22012: Division by 0 17348COMMIT; 17349 17350# check transactions-8 success: 1 17351# INFO: Storage engine used for t1 seems to be able to revert 17352# changes made by the failing statement. 17353SET @@session.sql_mode = ''; 17354Warnings: 17355Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17356SET AUTOCOMMIT= 1; 17357DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17358COMMIT WORK; 17359UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17360 17361# check special-1 success: 1 17362UPDATE t1 SET f_charbig = ''; 17363 17364# check special-2 success: 1 17365UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17366INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17367SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17368WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17369INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17370SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17371'just inserted' FROM t0_template 17372WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17373CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17374BEGIN 17375UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17376f_charbig = 'updated by trigger' 17377 WHERE f_int1 = new.f_int1; 17378END| 17379INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17380SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17381WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17382 17383# check trigger-1 success: 1 17384DROP TRIGGER trg_1; 17385UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17386f_int2 = CAST(f_char1 AS SIGNED INT), 17387f_charbig = 'just inserted' 17388 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17389DELETE FROM t0_aux 17390WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17391INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17392SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17393'just inserted' FROM t0_template 17394WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17395CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17396BEGIN 17397UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17398f_charbig = 'updated by trigger' 17399 WHERE f_int1 = new.f_int1; 17400END| 17401INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17402SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17403WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17404 17405# check trigger-2 success: 1 17406DROP TRIGGER trg_1; 17407UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17408f_int2 = CAST(f_char1 AS SIGNED INT), 17409f_charbig = 'just inserted' 17410 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17411DELETE FROM t0_aux 17412WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17413INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17414SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17415'just inserted' FROM t0_template 17416WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17417CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17418BEGIN 17419UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17420f_charbig = 'updated by trigger' 17421 WHERE f_int1 = new.f_int1; 17422END| 17423UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17424WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17425 17426# check trigger-3 success: 1 17427DROP TRIGGER trg_1; 17428UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17429f_int2 = CAST(f_char1 AS SIGNED INT), 17430f_charbig = 'just inserted' 17431 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17432DELETE FROM t0_aux 17433WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17434INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17435SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17436'just inserted' FROM t0_template 17437WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17438CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17439BEGIN 17440UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17441f_charbig = 'updated by trigger' 17442 WHERE f_int1 = - old.f_int1; 17443END| 17444UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17445WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17446 17447# check trigger-4 success: 1 17448DROP TRIGGER trg_1; 17449UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17450f_int2 = CAST(f_char1 AS SIGNED INT), 17451f_charbig = 'just inserted' 17452 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17453DELETE FROM t0_aux 17454WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17455INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17456SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17457'just inserted' FROM t0_template 17458WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17459CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17460BEGIN 17461UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17462f_charbig = 'updated by trigger' 17463 WHERE f_int1 = new.f_int1; 17464END| 17465UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17466WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17467 17468# check trigger-5 success: 1 17469DROP TRIGGER trg_1; 17470UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17471f_int2 = CAST(f_char1 AS SIGNED INT), 17472f_charbig = 'just inserted' 17473 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17474DELETE FROM t0_aux 17475WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17476INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17477SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17478'just inserted' FROM t0_template 17479WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17480CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17481BEGIN 17482UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17483f_charbig = 'updated by trigger' 17484 WHERE f_int1 = - old.f_int1; 17485END| 17486UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17487WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17488 17489# check trigger-6 success: 1 17490DROP TRIGGER trg_1; 17491UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17492f_int2 = CAST(f_char1 AS SIGNED INT), 17493f_charbig = 'just inserted' 17494 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17495DELETE FROM t0_aux 17496WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17497INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17498SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17499'just inserted' FROM t0_template 17500WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17501CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 17502BEGIN 17503UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17504f_charbig = 'updated by trigger' 17505 WHERE f_int1 = - old.f_int1; 17506END| 17507DELETE FROM t0_aux 17508WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17509 17510# check trigger-7 success: 1 17511DROP TRIGGER trg_1; 17512UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17513f_int2 = CAST(f_char1 AS SIGNED INT), 17514f_charbig = 'just inserted' 17515 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17516DELETE FROM t0_aux 17517WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17518INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17519SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17520'just inserted' FROM t0_template 17521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17522CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 17523BEGIN 17524UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17525f_charbig = 'updated by trigger' 17526 WHERE f_int1 = - old.f_int1; 17527END| 17528DELETE FROM t0_aux 17529WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17530 17531# check trigger-8 success: 1 17532DROP TRIGGER trg_1; 17533UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17534f_int2 = CAST(f_char1 AS SIGNED INT), 17535f_charbig = 'just inserted' 17536 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17537DELETE FROM t0_aux 17538WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17539DELETE FROM t1 17540WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17541CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17542BEGIN 17543SET new.f_int1 = old.f_int1 + @max_row, 17544new.f_int2 = old.f_int2 - @max_row, 17545new.f_charbig = '####updated per update trigger####'; 17546END| 17547UPDATE t1 17548SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17549f_charbig = '####updated per update statement itself####'; 17550 17551# check trigger-9 success: 1 17552DROP TRIGGER trg_2; 17553UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17554f_int2 = CAST(f_char1 AS SIGNED INT), 17555f_charbig = CONCAT('===',f_char1,'==='); 17556CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 17557BEGIN 17558SET new.f_int1 = new.f_int1 + @max_row, 17559new.f_int2 = new.f_int2 - @max_row, 17560new.f_charbig = '####updated per update trigger####'; 17561END| 17562UPDATE t1 17563SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 17564f_charbig = '####updated per update statement itself####'; 17565 17566# check trigger-10 success: 1 17567DROP TRIGGER trg_2; 17568UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17569f_int2 = CAST(f_char1 AS SIGNED INT), 17570f_charbig = CONCAT('===',f_char1,'==='); 17571CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17572BEGIN 17573SET new.f_int1 = @my_max1 + @counter, 17574new.f_int2 = @my_min2 - @counter, 17575new.f_charbig = '####updated per insert trigger####'; 17576SET @counter = @counter + 1; 17577END| 17578SET @counter = 1; 17579SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17580INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17581SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17582CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17583WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17584ORDER BY f_int1; 17585DROP TRIGGER trg_3; 17586 17587# check trigger-11 success: 1 17588DELETE FROM t1 17589WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17590AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17591AND f_charbig = '####updated per insert trigger####'; 17592CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 17593BEGIN 17594SET new.f_int1 = @my_max1 + @counter, 17595new.f_int2 = @my_min2 - @counter, 17596new.f_charbig = '####updated per insert trigger####'; 17597SET @counter = @counter + 1; 17598END| 17599SET @counter = 1; 17600SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 17601INSERT INTO t1 (f_char1, f_char2, f_charbig) 17602SELECT CAST(f_int1 AS CHAR), 17603CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 17604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 17605ORDER BY f_int1; 17606DROP TRIGGER trg_3; 17607 17608# check trigger-12 success: 1 17609DELETE FROM t1 17610WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 17611AND f_int2 <> CAST(f_char1 AS SIGNED INT) 17612AND f_charbig = '####updated per insert trigger####'; 17613ANALYZE TABLE t1; 17614Table Op Msg_type Msg_text 17615test.t1 analyze status OK 17616CHECK TABLE t1 EXTENDED; 17617Table Op Msg_type Msg_text 17618test.t1 check status OK 17619CHECKSUM TABLE t1 EXTENDED; 17620Table Checksum 17621test.t1 <some_value> 17622OPTIMIZE TABLE t1; 17623Table Op Msg_type Msg_text 17624test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 17625test.t1 optimize status OK 17626# check layout success: 1 17627REPAIR TABLE t1 EXTENDED; 17628Table Op Msg_type Msg_text 17629test.t1 repair status OK 17630# check layout success: 1 17631TRUNCATE t1; 17632 17633# check TRUNCATE success: 1 17634# check layout success: 1 17635# End usability test (inc/partition_check.inc) 17636DROP TABLE t1; 17637CREATE TABLE t1 ( 17638f_int1 INTEGER, 17639f_int2 INTEGER, 17640f_char1 CHAR(20), 17641f_char2 CHAR(20), 17642f_charbig VARCHAR(1000) 17643, UNIQUE INDEX uidx1 (f_int2,f_int1) 17644) 17645PARTITION BY RANGE(f_int1) 17646(PARTITION parta VALUES LESS THAN (0), 17647PARTITION partb VALUES LESS THAN (5), 17648PARTITION partc VALUES LESS THAN (10), 17649PARTITION partd VALUES LESS THAN (10 + 5), 17650PARTITION parte VALUES LESS THAN (20), 17651PARTITION partf VALUES LESS THAN (2147483646)); 17652INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17653SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17654WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 17655ALTER TABLE t1 MODIFY f_int2 BIGINT; 17656INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17657SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 17658WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 17659# Start usability test (inc/partition_check.inc) 17660create_command 17661SHOW CREATE TABLE t1; 17662Table Create Table 17663t1 CREATE TABLE `t1` ( 17664 `f_int1` int(11) DEFAULT NULL, 17665 `f_int2` bigint(20) DEFAULT NULL, 17666 `f_char1` char(20) DEFAULT NULL, 17667 `f_char2` char(20) DEFAULT NULL, 17668 `f_charbig` varchar(1000) DEFAULT NULL, 17669 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 17670) ENGINE=TokuDB DEFAULT CHARSET=latin1 17671/*!50100 PARTITION BY RANGE (f_int1) 17672(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 17673 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 17674 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 17675 PARTITION partd VALUES LESS THAN (15) ENGINE = TokuDB, 17676 PARTITION parte VALUES LESS THAN (20) ENGINE = TokuDB, 17677 PARTITION partf VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 17678 17679# check prerequisites-1 success: 1 17680# check COUNT(*) success: 1 17681# check MIN/MAX(f_int1) success: 1 17682# check MIN/MAX(f_int2) success: 1 17683INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17684SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 17685CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 17686WHERE f_int1 IN (2,3); 17687ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 17688# check prerequisites-3 success: 1 17689# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 17690INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17691SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17692CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17693WHERE f_int1 IN (2,3); 17694DELETE FROM t1 WHERE f_charbig = 'delete me'; 17695INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17696SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 17697CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 17698WHERE f_int1 IN (2,3); 17699DELETE FROM t1 WHERE f_charbig = 'delete me'; 17700# check read via f_int1 success: 1 17701# check read via f_int2 success: 1 17702 17703# check multiple-1 success: 1 17704DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 17705 17706# check multiple-2 success: 1 17707INSERT INTO t1 SELECT * FROM t0_template 17708WHERE MOD(f_int1,3) = 0; 17709 17710# check multiple-3 success: 1 17711UPDATE t1 SET f_int1 = f_int1 + @max_row 17712WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 17713AND @max_row_div2 + @max_row_div4; 17714 17715# check multiple-4 success: 1 17716DELETE FROM t1 17717WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 17718AND @max_row_div2 + @max_row_div4 + @max_row; 17719 17720# check multiple-5 success: 1 17721SELECT COUNT(*) INTO @try_count FROM t0_template 17722WHERE MOD(f_int1,3) = 0 17723AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17724SELECT COUNT(*) INTO @clash_count 17725FROM t1 INNER JOIN t0_template USING(f_int1) 17726WHERE MOD(f_int1,3) = 0 17727AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17728SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 17729INSERT INTO t1 17730SET f_int1 = @cur_value , f_int2 = @cur_value, 17731f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17732f_charbig = '#SINGLE#'; 17733 17734# check single-1 success: 1 17735SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 17736INSERT INTO t1 17737SET f_int1 = @cur_value , f_int2 = @cur_value, 17738f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 17739f_charbig = '#SINGLE#'; 17740 17741# check single-2 success: 1 17742SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 17743SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 17744UPDATE t1 SET f_int1 = @cur_value2 17745WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 17746 17747# check single-3 success: 1 17748SET @cur_value1= -1; 17749SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 17750UPDATE t1 SET f_int1 = @cur_value1 17751WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 17752 17753# check single-4 success: 1 17754SELECT MAX(f_int1) INTO @cur_value FROM t1; 17755DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 17756 17757# check single-5 success: 1 17758DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 17759 17760# check single-6 success: 1 17761INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 17762ERROR HY000: Table has no partition for value 2147483647 17763DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 17764INSERT t1 SET f_int1 = 0 , f_int2 = 0, 17765f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 17766f_charbig = '#NULL#'; 17767INSERT INTO t1 17768SET f_int1 = NULL , f_int2 = -@max_row, 17769f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 17770f_charbig = '#NULL#'; 17771# check null success: 1 17772 17773# check null-1 success: 1 17774UPDATE t1 SET f_int1 = -@max_row 17775WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17776AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17777 17778# check null-2 success: 1 17779UPDATE t1 SET f_int1 = NULL 17780WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17781AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17782 17783# check null-3 success: 1 17784DELETE FROM t1 17785WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 17786AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 17787 17788# check null-4 success: 1 17789DELETE FROM t1 17790WHERE f_int1 = 0 AND f_int2 = 0 17791AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 17792AND f_charbig = '#NULL#'; 17793INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17794SELECT f_int1, f_int1, '', '', 'was inserted' 17795 FROM t0_template source_tab 17796WHERE MOD(f_int1,3) = 0 17797AND f_int1 BETWEEN @max_row_div2 AND @max_row 17798ON DUPLICATE KEY 17799UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 17800f_int2 = 2 * @max_row + source_tab.f_int1, 17801f_charbig = 'was updated'; 17802 17803# check unique-1-a success: 1 17804 17805# check unique-1-b success: 1 17806DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17807UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17808f_int2 = CAST(f_char1 AS SIGNED INT), 17809f_charbig = CONCAT('===',f_char1,'===') 17810WHERE f_charbig = 'was updated'; 17811REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17812SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 17813 FROM t0_template source_tab 17814WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 17815 17816# check replace success: 1 17817DELETE FROM t1 17818WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 17819DELETE FROM t1 17820WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 17821f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 17822UPDATE t1 SET f_int2 = f_int1, 17823f_char1 = CAST(f_int1 AS CHAR), 17824f_char2 = CAST(f_int1 AS CHAR), 17825f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 17826WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 17827SET AUTOCOMMIT= 0; 17828INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17829SELECT f_int1, f_int1, '', '', 'was inserted' 17830FROM t0_template source_tab 17831WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17832 17833# check transactions-1 success: 1 17834COMMIT WORK; 17835 17836# check transactions-2 success: 1 17837ROLLBACK WORK; 17838 17839# check transactions-3 success: 1 17840DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17841COMMIT WORK; 17842ROLLBACK WORK; 17843 17844# check transactions-4 success: 1 17845INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17846SELECT f_int1, f_int1, '', '', 'was inserted' 17847FROM t0_template source_tab 17848WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17849 17850# check transactions-5 success: 1 17851ROLLBACK WORK; 17852 17853# check transactions-6 success: 1 17854# INFO: Storage engine used for t1 seems to be transactional. 17855COMMIT; 17856 17857# check transactions-7 success: 1 17858DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17859COMMIT WORK; 17860SET @@session.sql_mode = 'traditional'; 17861Warnings: 17862Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17863SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 17864INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 17865SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 17866'', '', 'was inserted' FROM t0_template 17867WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 17868ERROR 22012: Division by 0 17869COMMIT; 17870 17871# check transactions-8 success: 1 17872# INFO: Storage engine used for t1 seems to be able to revert 17873# changes made by the failing statement. 17874SET @@session.sql_mode = ''; 17875Warnings: 17876Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 17877SET AUTOCOMMIT= 1; 17878DELETE FROM t1 WHERE f_charbig = 'was inserted'; 17879COMMIT WORK; 17880UPDATE t1 SET f_charbig = REPEAT('b', 1000); 17881 17882# check special-1 success: 1 17883UPDATE t1 SET f_charbig = ''; 17884 17885# check special-2 success: 1 17886UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 17887INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 17888SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 17889WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17890INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17891SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17892'just inserted' FROM t0_template 17893WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17894CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 17895BEGIN 17896UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17897f_charbig = 'updated by trigger' 17898 WHERE f_int1 = new.f_int1; 17899END| 17900INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17901SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17902WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17903 17904# check trigger-1 success: 1 17905DROP TRIGGER trg_1; 17906UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17907f_int2 = CAST(f_char1 AS SIGNED INT), 17908f_charbig = 'just inserted' 17909 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17910DELETE FROM t0_aux 17911WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17912INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17913SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17914'just inserted' FROM t0_template 17915WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17916CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 17917BEGIN 17918UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17919f_charbig = 'updated by trigger' 17920 WHERE f_int1 = new.f_int1; 17921END| 17922INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17923SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 17924WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17925 17926# check trigger-2 success: 1 17927DROP TRIGGER trg_1; 17928UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17929f_int2 = CAST(f_char1 AS SIGNED INT), 17930f_charbig = 'just inserted' 17931 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17932DELETE FROM t0_aux 17933WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17934INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17935SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17936'just inserted' FROM t0_template 17937WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17938CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17939BEGIN 17940UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17941f_charbig = 'updated by trigger' 17942 WHERE f_int1 = new.f_int1; 17943END| 17944UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17945WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17946 17947# check trigger-3 success: 1 17948DROP TRIGGER trg_1; 17949UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17950f_int2 = CAST(f_char1 AS SIGNED INT), 17951f_charbig = 'just inserted' 17952 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17953DELETE FROM t0_aux 17954WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17955INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17956SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17957'just inserted' FROM t0_template 17958WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17959CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 17960BEGIN 17961UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17962f_charbig = 'updated by trigger' 17963 WHERE f_int1 = - old.f_int1; 17964END| 17965UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17966WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17967 17968# check trigger-4 success: 1 17969DROP TRIGGER trg_1; 17970UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17971f_int2 = CAST(f_char1 AS SIGNED INT), 17972f_charbig = 'just inserted' 17973 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17974DELETE FROM t0_aux 17975WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17976INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17977SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17978'just inserted' FROM t0_template 17979WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17980CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 17981BEGIN 17982UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 17983f_charbig = 'updated by trigger' 17984 WHERE f_int1 = new.f_int1; 17985END| 17986UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 17987WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 17988 17989# check trigger-5 success: 1 17990DROP TRIGGER trg_1; 17991UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 17992f_int2 = CAST(f_char1 AS SIGNED INT), 17993f_charbig = 'just inserted' 17994 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 17995DELETE FROM t0_aux 17996WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 17997INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 17998SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 17999'just inserted' FROM t0_template 18000WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18001CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18002BEGIN 18003UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18004f_charbig = 'updated by trigger' 18005 WHERE f_int1 = - old.f_int1; 18006END| 18007UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18008WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18009 18010# check trigger-6 success: 1 18011DROP TRIGGER trg_1; 18012UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18013f_int2 = CAST(f_char1 AS SIGNED INT), 18014f_charbig = 'just inserted' 18015 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18016DELETE FROM t0_aux 18017WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18018INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18019SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18020'just inserted' FROM t0_template 18021WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18022CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18023BEGIN 18024UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18025f_charbig = 'updated by trigger' 18026 WHERE f_int1 = - old.f_int1; 18027END| 18028DELETE FROM t0_aux 18029WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18030 18031# check trigger-7 success: 1 18032DROP TRIGGER trg_1; 18033UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18034f_int2 = CAST(f_char1 AS SIGNED INT), 18035f_charbig = 'just inserted' 18036 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18037DELETE FROM t0_aux 18038WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18039INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18040SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18041'just inserted' FROM t0_template 18042WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18043CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18044BEGIN 18045UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18046f_charbig = 'updated by trigger' 18047 WHERE f_int1 = - old.f_int1; 18048END| 18049DELETE FROM t0_aux 18050WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18051 18052# check trigger-8 success: 1 18053DROP TRIGGER trg_1; 18054UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18055f_int2 = CAST(f_char1 AS SIGNED INT), 18056f_charbig = 'just inserted' 18057 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18058DELETE FROM t0_aux 18059WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18060DELETE FROM t1 18061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18062CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18063BEGIN 18064SET new.f_int1 = old.f_int1 + @max_row, 18065new.f_int2 = old.f_int2 - @max_row, 18066new.f_charbig = '####updated per update trigger####'; 18067END| 18068UPDATE t1 18069SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18070f_charbig = '####updated per update statement itself####'; 18071 18072# check trigger-9 success: 1 18073DROP TRIGGER trg_2; 18074UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18075f_int2 = CAST(f_char1 AS SIGNED INT), 18076f_charbig = CONCAT('===',f_char1,'==='); 18077CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18078BEGIN 18079SET new.f_int1 = new.f_int1 + @max_row, 18080new.f_int2 = new.f_int2 - @max_row, 18081new.f_charbig = '####updated per update trigger####'; 18082END| 18083UPDATE t1 18084SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18085f_charbig = '####updated per update statement itself####'; 18086 18087# check trigger-10 success: 1 18088DROP TRIGGER trg_2; 18089UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18090f_int2 = CAST(f_char1 AS SIGNED INT), 18091f_charbig = CONCAT('===',f_char1,'==='); 18092CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18093BEGIN 18094SET new.f_int1 = @my_max1 + @counter, 18095new.f_int2 = @my_min2 - @counter, 18096new.f_charbig = '####updated per insert trigger####'; 18097SET @counter = @counter + 1; 18098END| 18099SET @counter = 1; 18100SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18101INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18102SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18103CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18104WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18105ORDER BY f_int1; 18106DROP TRIGGER trg_3; 18107 18108# check trigger-11 success: 1 18109DELETE FROM t1 18110WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18111AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18112AND f_charbig = '####updated per insert trigger####'; 18113CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18114BEGIN 18115SET new.f_int1 = @my_max1 + @counter, 18116new.f_int2 = @my_min2 - @counter, 18117new.f_charbig = '####updated per insert trigger####'; 18118SET @counter = @counter + 1; 18119END| 18120SET @counter = 1; 18121SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18122INSERT INTO t1 (f_char1, f_char2, f_charbig) 18123SELECT CAST(f_int1 AS CHAR), 18124CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18125WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18126ORDER BY f_int1; 18127DROP TRIGGER trg_3; 18128 18129# check trigger-12 success: 1 18130DELETE FROM t1 18131WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18132AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18133AND f_charbig = '####updated per insert trigger####'; 18134ANALYZE TABLE t1; 18135Table Op Msg_type Msg_text 18136test.t1 analyze status OK 18137CHECK TABLE t1 EXTENDED; 18138Table Op Msg_type Msg_text 18139test.t1 check status OK 18140CHECKSUM TABLE t1 EXTENDED; 18141Table Checksum 18142test.t1 <some_value> 18143OPTIMIZE TABLE t1; 18144Table Op Msg_type Msg_text 18145test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 18146test.t1 optimize status OK 18147# check layout success: 1 18148REPAIR TABLE t1 EXTENDED; 18149Table Op Msg_type Msg_text 18150test.t1 repair status OK 18151# check layout success: 1 18152TRUNCATE t1; 18153 18154# check TRUNCATE success: 1 18155# check layout success: 1 18156# End usability test (inc/partition_check.inc) 18157DROP TABLE t1; 18158CREATE TABLE t1 ( 18159f_int1 INTEGER, 18160f_int2 INTEGER, 18161f_char1 CHAR(20), 18162f_char2 CHAR(20), 18163f_charbig VARCHAR(1000) 18164, UNIQUE INDEX uidx1 (f_int2,f_int1) 18165) 18166PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 18167(PARTITION parta VALUES LESS THAN (0), 18168PARTITION partb VALUES LESS THAN (5), 18169PARTITION partc VALUES LESS THAN (10), 18170PARTITION partd VALUES LESS THAN (2147483646)); 18171INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18172SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18173WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 18174ALTER TABLE t1 MODIFY f_int2 BIGINT; 18175INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18176SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18177WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 18178# Start usability test (inc/partition_check.inc) 18179create_command 18180SHOW CREATE TABLE t1; 18181Table Create Table 18182t1 CREATE TABLE `t1` ( 18183 `f_int1` int(11) DEFAULT NULL, 18184 `f_int2` bigint(20) DEFAULT NULL, 18185 `f_char1` char(20) DEFAULT NULL, 18186 `f_char2` char(20) DEFAULT NULL, 18187 `f_charbig` varchar(1000) DEFAULT NULL, 18188 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 18189) ENGINE=TokuDB DEFAULT CHARSET=latin1 18190/*!50100 PARTITION BY RANGE (f_int1 DIV 2) 18191SUBPARTITION BY HASH (f_int1) 18192SUBPARTITIONS 2 18193(PARTITION parta VALUES LESS THAN (0) ENGINE = TokuDB, 18194 PARTITION partb VALUES LESS THAN (5) ENGINE = TokuDB, 18195 PARTITION partc VALUES LESS THAN (10) ENGINE = TokuDB, 18196 PARTITION partd VALUES LESS THAN (2147483646) ENGINE = TokuDB) */ 18197 18198# check prerequisites-1 success: 1 18199# check COUNT(*) success: 1 18200# check MIN/MAX(f_int1) success: 1 18201# check MIN/MAX(f_int2) success: 1 18202INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18203SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18204CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18205WHERE f_int1 IN (2,3); 18206ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 18207# check prerequisites-3 success: 1 18208# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18209INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18210SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18211CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18212WHERE f_int1 IN (2,3); 18213DELETE FROM t1 WHERE f_charbig = 'delete me'; 18214INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18215SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18216CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18217WHERE f_int1 IN (2,3); 18218DELETE FROM t1 WHERE f_charbig = 'delete me'; 18219# check read via f_int1 success: 1 18220# check read via f_int2 success: 1 18221 18222# check multiple-1 success: 1 18223DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18224 18225# check multiple-2 success: 1 18226INSERT INTO t1 SELECT * FROM t0_template 18227WHERE MOD(f_int1,3) = 0; 18228 18229# check multiple-3 success: 1 18230UPDATE t1 SET f_int1 = f_int1 + @max_row 18231WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18232AND @max_row_div2 + @max_row_div4; 18233 18234# check multiple-4 success: 1 18235DELETE FROM t1 18236WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18237AND @max_row_div2 + @max_row_div4 + @max_row; 18238 18239# check multiple-5 success: 1 18240SELECT COUNT(*) INTO @try_count FROM t0_template 18241WHERE MOD(f_int1,3) = 0 18242AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18243SELECT COUNT(*) INTO @clash_count 18244FROM t1 INNER JOIN t0_template USING(f_int1) 18245WHERE MOD(f_int1,3) = 0 18246AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18247SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18248INSERT INTO t1 18249SET f_int1 = @cur_value , f_int2 = @cur_value, 18250f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18251f_charbig = '#SINGLE#'; 18252 18253# check single-1 success: 1 18254SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18255INSERT INTO t1 18256SET f_int1 = @cur_value , f_int2 = @cur_value, 18257f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18258f_charbig = '#SINGLE#'; 18259 18260# check single-2 success: 1 18261SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18262SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18263UPDATE t1 SET f_int1 = @cur_value2 18264WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18265 18266# check single-3 success: 1 18267SET @cur_value1= -1; 18268SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18269UPDATE t1 SET f_int1 = @cur_value1 18270WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18271 18272# check single-4 success: 1 18273SELECT MAX(f_int1) INTO @cur_value FROM t1; 18274DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18275 18276# check single-5 success: 1 18277DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18278 18279# check single-6 success: 1 18280INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18281 18282# check single-7 success: 1 18283DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 18284DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18285INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18286f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18287f_charbig = '#NULL#'; 18288INSERT INTO t1 18289SET f_int1 = NULL , f_int2 = -@max_row, 18290f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18291f_charbig = '#NULL#'; 18292# check null success: 1 18293 18294# check null-1 success: 1 18295UPDATE t1 SET f_int1 = -@max_row 18296WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18297AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18298 18299# check null-2 success: 1 18300UPDATE t1 SET f_int1 = NULL 18301WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18302AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18303 18304# check null-3 success: 1 18305DELETE FROM t1 18306WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18307AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18308 18309# check null-4 success: 1 18310DELETE FROM t1 18311WHERE f_int1 = 0 AND f_int2 = 0 18312AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18313AND f_charbig = '#NULL#'; 18314INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18315SELECT f_int1, f_int1, '', '', 'was inserted' 18316 FROM t0_template source_tab 18317WHERE MOD(f_int1,3) = 0 18318AND f_int1 BETWEEN @max_row_div2 AND @max_row 18319ON DUPLICATE KEY 18320UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18321f_int2 = 2 * @max_row + source_tab.f_int1, 18322f_charbig = 'was updated'; 18323 18324# check unique-1-a success: 1 18325 18326# check unique-1-b success: 1 18327DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18328UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18329f_int2 = CAST(f_char1 AS SIGNED INT), 18330f_charbig = CONCAT('===',f_char1,'===') 18331WHERE f_charbig = 'was updated'; 18332REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18333SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18334 FROM t0_template source_tab 18335WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18336 18337# check replace success: 1 18338DELETE FROM t1 18339WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18340DELETE FROM t1 18341WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18342f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18343UPDATE t1 SET f_int2 = f_int1, 18344f_char1 = CAST(f_int1 AS CHAR), 18345f_char2 = CAST(f_int1 AS CHAR), 18346f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18347WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18348SET AUTOCOMMIT= 0; 18349INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18350SELECT f_int1, f_int1, '', '', 'was inserted' 18351FROM t0_template source_tab 18352WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18353 18354# check transactions-1 success: 1 18355COMMIT WORK; 18356 18357# check transactions-2 success: 1 18358ROLLBACK WORK; 18359 18360# check transactions-3 success: 1 18361DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18362COMMIT WORK; 18363ROLLBACK WORK; 18364 18365# check transactions-4 success: 1 18366INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18367SELECT f_int1, f_int1, '', '', 'was inserted' 18368FROM t0_template source_tab 18369WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18370 18371# check transactions-5 success: 1 18372ROLLBACK WORK; 18373 18374# check transactions-6 success: 1 18375# INFO: Storage engine used for t1 seems to be transactional. 18376COMMIT; 18377 18378# check transactions-7 success: 1 18379DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18380COMMIT WORK; 18381SET @@session.sql_mode = 'traditional'; 18382Warnings: 18383Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18384SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18385INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18386SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18387'', '', 'was inserted' FROM t0_template 18388WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18389ERROR 22012: Division by 0 18390COMMIT; 18391 18392# check transactions-8 success: 1 18393# INFO: Storage engine used for t1 seems to be able to revert 18394# changes made by the failing statement. 18395SET @@session.sql_mode = ''; 18396Warnings: 18397Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18398SET AUTOCOMMIT= 1; 18399DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18400COMMIT WORK; 18401UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18402 18403# check special-1 success: 1 18404UPDATE t1 SET f_charbig = ''; 18405 18406# check special-2 success: 1 18407UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18408INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18409SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18410WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18411INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18412SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18413'just inserted' FROM t0_template 18414WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18415CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18416BEGIN 18417UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18418f_charbig = 'updated by trigger' 18419 WHERE f_int1 = new.f_int1; 18420END| 18421INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18422SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18423WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18424 18425# check trigger-1 success: 1 18426DROP TRIGGER trg_1; 18427UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18428f_int2 = CAST(f_char1 AS SIGNED INT), 18429f_charbig = 'just inserted' 18430 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18431DELETE FROM t0_aux 18432WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18433INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18434SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18435'just inserted' FROM t0_template 18436WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18437CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 18438BEGIN 18439UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18440f_charbig = 'updated by trigger' 18441 WHERE f_int1 = new.f_int1; 18442END| 18443INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18444SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18445WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18446 18447# check trigger-2 success: 1 18448DROP TRIGGER trg_1; 18449UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18450f_int2 = CAST(f_char1 AS SIGNED INT), 18451f_charbig = 'just inserted' 18452 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18453DELETE FROM t0_aux 18454WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18455INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18456SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18457'just inserted' FROM t0_template 18458WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18459CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18460BEGIN 18461UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18462f_charbig = 'updated by trigger' 18463 WHERE f_int1 = new.f_int1; 18464END| 18465UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18466WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18467 18468# check trigger-3 success: 1 18469DROP TRIGGER trg_1; 18470UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18471f_int2 = CAST(f_char1 AS SIGNED INT), 18472f_charbig = 'just inserted' 18473 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18474DELETE FROM t0_aux 18475WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18476INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18477SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18478'just inserted' FROM t0_template 18479WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18480CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18481BEGIN 18482UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18483f_charbig = 'updated by trigger' 18484 WHERE f_int1 = - old.f_int1; 18485END| 18486UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18487WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18488 18489# check trigger-4 success: 1 18490DROP TRIGGER trg_1; 18491UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18492f_int2 = CAST(f_char1 AS SIGNED INT), 18493f_charbig = 'just inserted' 18494 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18495DELETE FROM t0_aux 18496WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18497INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18498SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18499'just inserted' FROM t0_template 18500WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18501CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18502BEGIN 18503UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18504f_charbig = 'updated by trigger' 18505 WHERE f_int1 = new.f_int1; 18506END| 18507UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18508WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18509 18510# check trigger-5 success: 1 18511DROP TRIGGER trg_1; 18512UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18513f_int2 = CAST(f_char1 AS SIGNED INT), 18514f_charbig = 'just inserted' 18515 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18516DELETE FROM t0_aux 18517WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18518INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18519SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18520'just inserted' FROM t0_template 18521WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18522CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 18523BEGIN 18524UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18525f_charbig = 'updated by trigger' 18526 WHERE f_int1 = - old.f_int1; 18527END| 18528UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18529WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18530 18531# check trigger-6 success: 1 18532DROP TRIGGER trg_1; 18533UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18534f_int2 = CAST(f_char1 AS SIGNED INT), 18535f_charbig = 'just inserted' 18536 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18537DELETE FROM t0_aux 18538WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18539INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18540SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18541'just inserted' FROM t0_template 18542WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18543CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 18544BEGIN 18545UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18546f_charbig = 'updated by trigger' 18547 WHERE f_int1 = - old.f_int1; 18548END| 18549DELETE FROM t0_aux 18550WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18551 18552# check trigger-7 success: 1 18553DROP TRIGGER trg_1; 18554UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18555f_int2 = CAST(f_char1 AS SIGNED INT), 18556f_charbig = 'just inserted' 18557 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18558DELETE FROM t0_aux 18559WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18560INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18561SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18562'just inserted' FROM t0_template 18563WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18564CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 18565BEGIN 18566UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18567f_charbig = 'updated by trigger' 18568 WHERE f_int1 = - old.f_int1; 18569END| 18570DELETE FROM t0_aux 18571WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18572 18573# check trigger-8 success: 1 18574DROP TRIGGER trg_1; 18575UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18576f_int2 = CAST(f_char1 AS SIGNED INT), 18577f_charbig = 'just inserted' 18578 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18579DELETE FROM t0_aux 18580WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18581DELETE FROM t1 18582WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18583CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18584BEGIN 18585SET new.f_int1 = old.f_int1 + @max_row, 18586new.f_int2 = old.f_int2 - @max_row, 18587new.f_charbig = '####updated per update trigger####'; 18588END| 18589UPDATE t1 18590SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18591f_charbig = '####updated per update statement itself####'; 18592 18593# check trigger-9 success: 1 18594DROP TRIGGER trg_2; 18595UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18596f_int2 = CAST(f_char1 AS SIGNED INT), 18597f_charbig = CONCAT('===',f_char1,'==='); 18598CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 18599BEGIN 18600SET new.f_int1 = new.f_int1 + @max_row, 18601new.f_int2 = new.f_int2 - @max_row, 18602new.f_charbig = '####updated per update trigger####'; 18603END| 18604UPDATE t1 18605SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 18606f_charbig = '####updated per update statement itself####'; 18607 18608# check trigger-10 success: 1 18609DROP TRIGGER trg_2; 18610UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18611f_int2 = CAST(f_char1 AS SIGNED INT), 18612f_charbig = CONCAT('===',f_char1,'==='); 18613CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18614BEGIN 18615SET new.f_int1 = @my_max1 + @counter, 18616new.f_int2 = @my_min2 - @counter, 18617new.f_charbig = '####updated per insert trigger####'; 18618SET @counter = @counter + 1; 18619END| 18620SET @counter = 1; 18621SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18622INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18623SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18624CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18625WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18626ORDER BY f_int1; 18627DROP TRIGGER trg_3; 18628 18629# check trigger-11 success: 1 18630DELETE FROM t1 18631WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18632AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18633AND f_charbig = '####updated per insert trigger####'; 18634CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 18635BEGIN 18636SET new.f_int1 = @my_max1 + @counter, 18637new.f_int2 = @my_min2 - @counter, 18638new.f_charbig = '####updated per insert trigger####'; 18639SET @counter = @counter + 1; 18640END| 18641SET @counter = 1; 18642SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 18643INSERT INTO t1 (f_char1, f_char2, f_charbig) 18644SELECT CAST(f_int1 AS CHAR), 18645CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 18646WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 18647ORDER BY f_int1; 18648DROP TRIGGER trg_3; 18649 18650# check trigger-12 success: 1 18651DELETE FROM t1 18652WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 18653AND f_int2 <> CAST(f_char1 AS SIGNED INT) 18654AND f_charbig = '####updated per insert trigger####'; 18655ANALYZE TABLE t1; 18656Table Op Msg_type Msg_text 18657test.t1 analyze status OK 18658CHECK TABLE t1 EXTENDED; 18659Table Op Msg_type Msg_text 18660test.t1 check status OK 18661CHECKSUM TABLE t1 EXTENDED; 18662Table Checksum 18663test.t1 <some_value> 18664OPTIMIZE TABLE t1; 18665Table Op Msg_type Msg_text 18666test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 18667test.t1 optimize status OK 18668# check layout success: 1 18669REPAIR TABLE t1 EXTENDED; 18670Table Op Msg_type Msg_text 18671test.t1 repair status OK 18672# check layout success: 1 18673TRUNCATE t1; 18674 18675# check TRUNCATE success: 1 18676# check layout success: 1 18677# End usability test (inc/partition_check.inc) 18678DROP TABLE t1; 18679CREATE TABLE t1 ( 18680f_int1 INTEGER, 18681f_int2 INTEGER, 18682f_char1 CHAR(20), 18683f_char2 CHAR(20), 18684f_charbig VARCHAR(1000) 18685, UNIQUE INDEX uidx1 (f_int2,f_int1) 18686) 18687PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) 18688(PARTITION part1 VALUES LESS THAN (0) 18689(SUBPARTITION subpart11, SUBPARTITION subpart12), 18690PARTITION part2 VALUES LESS THAN (5) 18691(SUBPARTITION subpart21, SUBPARTITION subpart22), 18692PARTITION part3 VALUES LESS THAN (10) 18693(SUBPARTITION subpart31, SUBPARTITION subpart32), 18694PARTITION part4 VALUES LESS THAN (2147483646) 18695(SUBPARTITION subpart41, SUBPARTITION subpart42)); 18696INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18697SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18698WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 18699ALTER TABLE t1 MODIFY f_int2 BIGINT; 18700INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18701SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 18702WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 18703# Start usability test (inc/partition_check.inc) 18704create_command 18705SHOW CREATE TABLE t1; 18706Table Create Table 18707t1 CREATE TABLE `t1` ( 18708 `f_int1` int(11) DEFAULT NULL, 18709 `f_int2` bigint(20) DEFAULT NULL, 18710 `f_char1` char(20) DEFAULT NULL, 18711 `f_char2` char(20) DEFAULT NULL, 18712 `f_charbig` varchar(1000) DEFAULT NULL, 18713 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 18714) ENGINE=TokuDB DEFAULT CHARSET=latin1 18715/*!50100 PARTITION BY RANGE (f_int1) 18716SUBPARTITION BY KEY (f_int1) 18717(PARTITION part1 VALUES LESS THAN (0) 18718 (SUBPARTITION subpart11 ENGINE = TokuDB, 18719 SUBPARTITION subpart12 ENGINE = TokuDB), 18720 PARTITION part2 VALUES LESS THAN (5) 18721 (SUBPARTITION subpart21 ENGINE = TokuDB, 18722 SUBPARTITION subpart22 ENGINE = TokuDB), 18723 PARTITION part3 VALUES LESS THAN (10) 18724 (SUBPARTITION subpart31 ENGINE = TokuDB, 18725 SUBPARTITION subpart32 ENGINE = TokuDB), 18726 PARTITION part4 VALUES LESS THAN (2147483646) 18727 (SUBPARTITION subpart41 ENGINE = TokuDB, 18728 SUBPARTITION subpart42 ENGINE = TokuDB)) */ 18729 18730# check prerequisites-1 success: 1 18731# check COUNT(*) success: 1 18732# check MIN/MAX(f_int1) success: 1 18733# check MIN/MAX(f_int2) success: 1 18734INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18735SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 18736CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 18737WHERE f_int1 IN (2,3); 18738ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 18739# check prerequisites-3 success: 1 18740# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 18741INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18742SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18743CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18744WHERE f_int1 IN (2,3); 18745DELETE FROM t1 WHERE f_charbig = 'delete me'; 18746INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18747SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 18748CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 18749WHERE f_int1 IN (2,3); 18750DELETE FROM t1 WHERE f_charbig = 'delete me'; 18751# check read via f_int1 success: 1 18752# check read via f_int2 success: 1 18753 18754# check multiple-1 success: 1 18755DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 18756 18757# check multiple-2 success: 1 18758INSERT INTO t1 SELECT * FROM t0_template 18759WHERE MOD(f_int1,3) = 0; 18760 18761# check multiple-3 success: 1 18762UPDATE t1 SET f_int1 = f_int1 + @max_row 18763WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 18764AND @max_row_div2 + @max_row_div4; 18765 18766# check multiple-4 success: 1 18767DELETE FROM t1 18768WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 18769AND @max_row_div2 + @max_row_div4 + @max_row; 18770 18771# check multiple-5 success: 1 18772SELECT COUNT(*) INTO @try_count FROM t0_template 18773WHERE MOD(f_int1,3) = 0 18774AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18775SELECT COUNT(*) INTO @clash_count 18776FROM t1 INNER JOIN t0_template USING(f_int1) 18777WHERE MOD(f_int1,3) = 0 18778AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18779SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 18780INSERT INTO t1 18781SET f_int1 = @cur_value , f_int2 = @cur_value, 18782f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18783f_charbig = '#SINGLE#'; 18784 18785# check single-1 success: 1 18786SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 18787INSERT INTO t1 18788SET f_int1 = @cur_value , f_int2 = @cur_value, 18789f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 18790f_charbig = '#SINGLE#'; 18791 18792# check single-2 success: 1 18793SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 18794SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 18795UPDATE t1 SET f_int1 = @cur_value2 18796WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 18797 18798# check single-3 success: 1 18799SET @cur_value1= -1; 18800SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 18801UPDATE t1 SET f_int1 = @cur_value1 18802WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 18803 18804# check single-4 success: 1 18805SELECT MAX(f_int1) INTO @cur_value FROM t1; 18806DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 18807 18808# check single-5 success: 1 18809DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 18810 18811# check single-6 success: 1 18812INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 18813ERROR HY000: Table has no partition for value 2147483647 18814DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 18815INSERT t1 SET f_int1 = 0 , f_int2 = 0, 18816f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 18817f_charbig = '#NULL#'; 18818INSERT INTO t1 18819SET f_int1 = NULL , f_int2 = -@max_row, 18820f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 18821f_charbig = '#NULL#'; 18822# check null success: 1 18823 18824# check null-1 success: 1 18825UPDATE t1 SET f_int1 = -@max_row 18826WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18827AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18828 18829# check null-2 success: 1 18830UPDATE t1 SET f_int1 = NULL 18831WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18832AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18833 18834# check null-3 success: 1 18835DELETE FROM t1 18836WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 18837AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 18838 18839# check null-4 success: 1 18840DELETE FROM t1 18841WHERE f_int1 = 0 AND f_int2 = 0 18842AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 18843AND f_charbig = '#NULL#'; 18844INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18845SELECT f_int1, f_int1, '', '', 'was inserted' 18846 FROM t0_template source_tab 18847WHERE MOD(f_int1,3) = 0 18848AND f_int1 BETWEEN @max_row_div2 AND @max_row 18849ON DUPLICATE KEY 18850UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 18851f_int2 = 2 * @max_row + source_tab.f_int1, 18852f_charbig = 'was updated'; 18853 18854# check unique-1-a success: 1 18855 18856# check unique-1-b success: 1 18857DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18858UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18859f_int2 = CAST(f_char1 AS SIGNED INT), 18860f_charbig = CONCAT('===',f_char1,'===') 18861WHERE f_charbig = 'was updated'; 18862REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18863SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 18864 FROM t0_template source_tab 18865WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 18866 18867# check replace success: 1 18868DELETE FROM t1 18869WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 18870DELETE FROM t1 18871WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 18872f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 18873UPDATE t1 SET f_int2 = f_int1, 18874f_char1 = CAST(f_int1 AS CHAR), 18875f_char2 = CAST(f_int1 AS CHAR), 18876f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 18877WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 18878SET AUTOCOMMIT= 0; 18879INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18880SELECT f_int1, f_int1, '', '', 'was inserted' 18881FROM t0_template source_tab 18882WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18883 18884# check transactions-1 success: 1 18885COMMIT WORK; 18886 18887# check transactions-2 success: 1 18888ROLLBACK WORK; 18889 18890# check transactions-3 success: 1 18891DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18892COMMIT WORK; 18893ROLLBACK WORK; 18894 18895# check transactions-4 success: 1 18896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18897SELECT f_int1, f_int1, '', '', 'was inserted' 18898FROM t0_template source_tab 18899WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18900 18901# check transactions-5 success: 1 18902ROLLBACK WORK; 18903 18904# check transactions-6 success: 1 18905# INFO: Storage engine used for t1 seems to be transactional. 18906COMMIT; 18907 18908# check transactions-7 success: 1 18909DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18910COMMIT WORK; 18911SET @@session.sql_mode = 'traditional'; 18912Warnings: 18913Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18914SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 18915INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 18916SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 18917'', '', 'was inserted' FROM t0_template 18918WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 18919ERROR 22012: Division by 0 18920COMMIT; 18921 18922# check transactions-8 success: 1 18923# INFO: Storage engine used for t1 seems to be able to revert 18924# changes made by the failing statement. 18925SET @@session.sql_mode = ''; 18926Warnings: 18927Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 18928SET AUTOCOMMIT= 1; 18929DELETE FROM t1 WHERE f_charbig = 'was inserted'; 18930COMMIT WORK; 18931UPDATE t1 SET f_charbig = REPEAT('b', 1000); 18932 18933# check special-1 success: 1 18934UPDATE t1 SET f_charbig = ''; 18935 18936# check special-2 success: 1 18937UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 18938INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 18939SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 18940WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18941INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18942SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18943'just inserted' FROM t0_template 18944WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18945CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 18946BEGIN 18947UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18948f_charbig = 'updated by trigger' 18949 WHERE f_int1 = new.f_int1; 18950END| 18951INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18952SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18953WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18954 18955# check trigger-1 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 AFTER INSERT 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 = new.f_int1; 18972END| 18973INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18974SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 18975WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18976 18977# check trigger-2 success: 1 18978DROP TRIGGER trg_1; 18979UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 18980f_int2 = CAST(f_char1 AS SIGNED INT), 18981f_charbig = 'just inserted' 18982 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 18983DELETE FROM t0_aux 18984WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18985INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 18986SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 18987'just inserted' FROM t0_template 18988WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 18989CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 18990BEGIN 18991UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 18992f_charbig = 'updated by trigger' 18993 WHERE f_int1 = new.f_int1; 18994END| 18995UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 18996WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 18997 18998# check trigger-3 success: 1 18999DROP TRIGGER trg_1; 19000UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19001f_int2 = CAST(f_char1 AS SIGNED INT), 19002f_charbig = 'just inserted' 19003 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19004DELETE FROM t0_aux 19005WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19006INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19007SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19008'just inserted' FROM t0_template 19009WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19010CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19011BEGIN 19012UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19013f_charbig = 'updated by trigger' 19014 WHERE f_int1 = - old.f_int1; 19015END| 19016UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19017WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19018 19019# check trigger-4 success: 1 19020DROP TRIGGER trg_1; 19021UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19022f_int2 = CAST(f_char1 AS SIGNED INT), 19023f_charbig = 'just inserted' 19024 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19025DELETE FROM t0_aux 19026WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19027INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19028SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19029'just inserted' FROM t0_template 19030WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19031CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19032BEGIN 19033UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19034f_charbig = 'updated by trigger' 19035 WHERE f_int1 = new.f_int1; 19036END| 19037UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19038WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19039 19040# check trigger-5 success: 1 19041DROP TRIGGER trg_1; 19042UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19043f_int2 = CAST(f_char1 AS SIGNED INT), 19044f_charbig = 'just inserted' 19045 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19046DELETE FROM t0_aux 19047WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19048INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19049SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19050'just inserted' FROM t0_template 19051WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19052CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19053BEGIN 19054UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19055f_charbig = 'updated by trigger' 19056 WHERE f_int1 = - old.f_int1; 19057END| 19058UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19059WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19060 19061# check trigger-6 success: 1 19062DROP TRIGGER trg_1; 19063UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19064f_int2 = CAST(f_char1 AS SIGNED INT), 19065f_charbig = 'just inserted' 19066 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19067DELETE FROM t0_aux 19068WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19069INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19070SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19071'just inserted' FROM t0_template 19072WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19073CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19074BEGIN 19075UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19076f_charbig = 'updated by trigger' 19077 WHERE f_int1 = - old.f_int1; 19078END| 19079DELETE FROM t0_aux 19080WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19081 19082# check trigger-7 success: 1 19083DROP TRIGGER trg_1; 19084UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19085f_int2 = CAST(f_char1 AS SIGNED INT), 19086f_charbig = 'just inserted' 19087 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19088DELETE FROM t0_aux 19089WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19090INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19091SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19092'just inserted' FROM t0_template 19093WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19094CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19095BEGIN 19096UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19097f_charbig = 'updated by trigger' 19098 WHERE f_int1 = - old.f_int1; 19099END| 19100DELETE FROM t0_aux 19101WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19102 19103# check trigger-8 success: 1 19104DROP TRIGGER trg_1; 19105UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19106f_int2 = CAST(f_char1 AS SIGNED INT), 19107f_charbig = 'just inserted' 19108 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19109DELETE FROM t0_aux 19110WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19111DELETE FROM t1 19112WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19113CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19114BEGIN 19115SET new.f_int1 = old.f_int1 + @max_row, 19116new.f_int2 = old.f_int2 - @max_row, 19117new.f_charbig = '####updated per update trigger####'; 19118END| 19119UPDATE t1 19120SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19121f_charbig = '####updated per update statement itself####'; 19122 19123# check trigger-9 success: 1 19124DROP TRIGGER trg_2; 19125UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19126f_int2 = CAST(f_char1 AS SIGNED INT), 19127f_charbig = CONCAT('===',f_char1,'==='); 19128CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19129BEGIN 19130SET new.f_int1 = new.f_int1 + @max_row, 19131new.f_int2 = new.f_int2 - @max_row, 19132new.f_charbig = '####updated per update trigger####'; 19133END| 19134UPDATE t1 19135SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19136f_charbig = '####updated per update statement itself####'; 19137 19138# check trigger-10 success: 1 19139DROP TRIGGER trg_2; 19140UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19141f_int2 = CAST(f_char1 AS SIGNED INT), 19142f_charbig = CONCAT('===',f_char1,'==='); 19143CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19144BEGIN 19145SET new.f_int1 = @my_max1 + @counter, 19146new.f_int2 = @my_min2 - @counter, 19147new.f_charbig = '####updated per insert trigger####'; 19148SET @counter = @counter + 1; 19149END| 19150SET @counter = 1; 19151SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19152INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19153SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19154CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19155WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19156ORDER BY f_int1; 19157DROP TRIGGER trg_3; 19158 19159# check trigger-11 success: 1 19160DELETE FROM t1 19161WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19162AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19163AND f_charbig = '####updated per insert trigger####'; 19164CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19165BEGIN 19166SET new.f_int1 = @my_max1 + @counter, 19167new.f_int2 = @my_min2 - @counter, 19168new.f_charbig = '####updated per insert trigger####'; 19169SET @counter = @counter + 1; 19170END| 19171SET @counter = 1; 19172SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19173INSERT INTO t1 (f_char1, f_char2, f_charbig) 19174SELECT CAST(f_int1 AS CHAR), 19175CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19176WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19177ORDER BY f_int1; 19178DROP TRIGGER trg_3; 19179 19180# check trigger-12 success: 1 19181DELETE FROM t1 19182WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19183AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19184AND f_charbig = '####updated per insert trigger####'; 19185ANALYZE TABLE t1; 19186Table Op Msg_type Msg_text 19187test.t1 analyze status OK 19188CHECK TABLE t1 EXTENDED; 19189Table Op Msg_type Msg_text 19190test.t1 check status OK 19191CHECKSUM TABLE t1 EXTENDED; 19192Table Checksum 19193test.t1 <some_value> 19194OPTIMIZE TABLE t1; 19195Table Op Msg_type Msg_text 19196test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 19197test.t1 optimize status OK 19198# check layout success: 1 19199REPAIR TABLE t1 EXTENDED; 19200Table Op Msg_type Msg_text 19201test.t1 repair status OK 19202# check layout success: 1 19203TRUNCATE t1; 19204 19205# check TRUNCATE success: 1 19206# check layout success: 1 19207# End usability test (inc/partition_check.inc) 19208DROP TABLE t1; 19209CREATE TABLE t1 ( 19210f_int1 INTEGER, 19211f_int2 INTEGER, 19212f_char1 CHAR(20), 19213f_char2 CHAR(20), 19214f_charbig VARCHAR(1000) 19215, UNIQUE INDEX uidx1 (f_int2,f_int1) 19216) 19217PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) 19218(PARTITION part1 VALUES IN (0) 19219(SUBPARTITION sp11, SUBPARTITION sp12), 19220PARTITION part2 VALUES IN (1) 19221(SUBPARTITION sp21, SUBPARTITION sp22), 19222PARTITION part3 VALUES IN (2) 19223(SUBPARTITION sp31, SUBPARTITION sp32), 19224PARTITION part4 VALUES IN (NULL) 19225(SUBPARTITION sp41, SUBPARTITION sp42)); 19226INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19227SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19228WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 19229ALTER TABLE t1 MODIFY f_int2 BIGINT; 19230INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19231SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19232WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 19233# Start usability test (inc/partition_check.inc) 19234create_command 19235SHOW CREATE TABLE t1; 19236Table Create Table 19237t1 CREATE TABLE `t1` ( 19238 `f_int1` int(11) DEFAULT NULL, 19239 `f_int2` bigint(20) DEFAULT NULL, 19240 `f_char1` char(20) DEFAULT NULL, 19241 `f_char2` char(20) DEFAULT NULL, 19242 `f_charbig` varchar(1000) DEFAULT NULL, 19243 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 19244) ENGINE=TokuDB DEFAULT CHARSET=latin1 19245/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) 19246SUBPARTITION BY HASH (f_int1 + 1) 19247(PARTITION part1 VALUES IN (0) 19248 (SUBPARTITION sp11 ENGINE = TokuDB, 19249 SUBPARTITION sp12 ENGINE = TokuDB), 19250 PARTITION part2 VALUES IN (1) 19251 (SUBPARTITION sp21 ENGINE = TokuDB, 19252 SUBPARTITION sp22 ENGINE = TokuDB), 19253 PARTITION part3 VALUES IN (2) 19254 (SUBPARTITION sp31 ENGINE = TokuDB, 19255 SUBPARTITION sp32 ENGINE = TokuDB), 19256 PARTITION part4 VALUES IN (NULL) 19257 (SUBPARTITION sp41 ENGINE = TokuDB, 19258 SUBPARTITION sp42 ENGINE = TokuDB)) */ 19259 19260# check prerequisites-1 success: 1 19261# check COUNT(*) success: 1 19262# check MIN/MAX(f_int1) success: 1 19263# check MIN/MAX(f_int2) success: 1 19264INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19265SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19266CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19267WHERE f_int1 IN (2,3); 19268ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 19269# check prerequisites-3 success: 1 19270# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19271INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19272SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19273CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19274WHERE f_int1 IN (2,3); 19275DELETE FROM t1 WHERE f_charbig = 'delete me'; 19276INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19277SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19278CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19279WHERE f_int1 IN (2,3); 19280DELETE FROM t1 WHERE f_charbig = 'delete me'; 19281# check read via f_int1 success: 1 19282# check read via f_int2 success: 1 19283 19284# check multiple-1 success: 1 19285DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19286 19287# check multiple-2 success: 1 19288INSERT INTO t1 SELECT * FROM t0_template 19289WHERE MOD(f_int1,3) = 0; 19290 19291# check multiple-3 success: 1 19292UPDATE t1 SET f_int1 = f_int1 + @max_row 19293WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19294AND @max_row_div2 + @max_row_div4; 19295 19296# check multiple-4 success: 1 19297DELETE FROM t1 19298WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19299AND @max_row_div2 + @max_row_div4 + @max_row; 19300 19301# check multiple-5 success: 1 19302SELECT COUNT(*) INTO @try_count FROM t0_template 19303WHERE MOD(f_int1,3) = 0 19304AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19305SELECT COUNT(*) INTO @clash_count 19306FROM t1 INNER JOIN t0_template USING(f_int1) 19307WHERE MOD(f_int1,3) = 0 19308AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19309SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19310INSERT INTO t1 19311SET f_int1 = @cur_value , f_int2 = @cur_value, 19312f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19313f_charbig = '#SINGLE#'; 19314 19315# check single-1 success: 1 19316SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19317INSERT INTO t1 19318SET f_int1 = @cur_value , f_int2 = @cur_value, 19319f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19320f_charbig = '#SINGLE#'; 19321 19322# check single-2 success: 1 19323SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19324SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19325UPDATE t1 SET f_int1 = @cur_value2 19326WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19327 19328# check single-3 success: 1 19329SET @cur_value1= -1; 19330SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19331UPDATE t1 SET f_int1 = @cur_value1 19332WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19333 19334# check single-4 success: 1 19335SELECT MAX(f_int1) INTO @cur_value FROM t1; 19336DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19337 19338# check single-5 success: 1 19339DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19340 19341# check single-6 success: 1 19342INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19343 19344# check single-7 success: 1 19345DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19346DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19347INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19348f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19349f_charbig = '#NULL#'; 19350INSERT INTO t1 19351SET f_int1 = NULL , f_int2 = -@max_row, 19352f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19353f_charbig = '#NULL#'; 19354# check null success: 1 19355 19356# check null-1 success: 1 19357UPDATE t1 SET f_int1 = -@max_row 19358WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19359AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19360 19361# check null-2 success: 1 19362UPDATE t1 SET f_int1 = NULL 19363WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19364AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19365 19366# check null-3 success: 1 19367DELETE FROM t1 19368WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19369AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19370 19371# check null-4 success: 1 19372DELETE FROM t1 19373WHERE f_int1 = 0 AND f_int2 = 0 19374AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19375AND f_charbig = '#NULL#'; 19376INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19377SELECT f_int1, f_int1, '', '', 'was inserted' 19378 FROM t0_template source_tab 19379WHERE MOD(f_int1,3) = 0 19380AND f_int1 BETWEEN @max_row_div2 AND @max_row 19381ON DUPLICATE KEY 19382UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19383f_int2 = 2 * @max_row + source_tab.f_int1, 19384f_charbig = 'was updated'; 19385 19386# check unique-1-a success: 1 19387 19388# check unique-1-b success: 1 19389DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19390UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19391f_int2 = CAST(f_char1 AS SIGNED INT), 19392f_charbig = CONCAT('===',f_char1,'===') 19393WHERE f_charbig = 'was updated'; 19394REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19395SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19396 FROM t0_template source_tab 19397WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19398 19399# check replace success: 1 19400DELETE FROM t1 19401WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19402DELETE FROM t1 19403WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19404f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19405UPDATE t1 SET f_int2 = f_int1, 19406f_char1 = CAST(f_int1 AS CHAR), 19407f_char2 = CAST(f_int1 AS CHAR), 19408f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19409WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19410SET AUTOCOMMIT= 0; 19411INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19412SELECT f_int1, f_int1, '', '', 'was inserted' 19413FROM t0_template source_tab 19414WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19415 19416# check transactions-1 success: 1 19417COMMIT WORK; 19418 19419# check transactions-2 success: 1 19420ROLLBACK WORK; 19421 19422# check transactions-3 success: 1 19423DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19424COMMIT WORK; 19425ROLLBACK WORK; 19426 19427# check transactions-4 success: 1 19428INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19429SELECT f_int1, f_int1, '', '', 'was inserted' 19430FROM t0_template source_tab 19431WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19432 19433# check transactions-5 success: 1 19434ROLLBACK WORK; 19435 19436# check transactions-6 success: 1 19437# INFO: Storage engine used for t1 seems to be transactional. 19438COMMIT; 19439 19440# check transactions-7 success: 1 19441DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19442COMMIT WORK; 19443SET @@session.sql_mode = 'traditional'; 19444Warnings: 19445Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19446SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19447INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19448SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19449'', '', 'was inserted' FROM t0_template 19450WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19451ERROR 22012: Division by 0 19452COMMIT; 19453 19454# check transactions-8 success: 1 19455# INFO: Storage engine used for t1 seems to be able to revert 19456# changes made by the failing statement. 19457SET @@session.sql_mode = ''; 19458Warnings: 19459Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19460SET AUTOCOMMIT= 1; 19461DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19462COMMIT WORK; 19463UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19464 19465# check special-1 success: 1 19466UPDATE t1 SET f_charbig = ''; 19467 19468# check special-2 success: 1 19469UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19470INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19471SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19472WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19473INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19474SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19475'just inserted' FROM t0_template 19476WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19477CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19478BEGIN 19479UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19480f_charbig = 'updated by trigger' 19481 WHERE f_int1 = new.f_int1; 19482END| 19483INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19484SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19485WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19486 19487# check trigger-1 success: 1 19488DROP TRIGGER trg_1; 19489UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19490f_int2 = CAST(f_char1 AS SIGNED INT), 19491f_charbig = 'just inserted' 19492 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19493DELETE FROM t0_aux 19494WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19495INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19496SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19497'just inserted' FROM t0_template 19498WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19499CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 19500BEGIN 19501UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19502f_charbig = 'updated by trigger' 19503 WHERE f_int1 = new.f_int1; 19504END| 19505INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19506SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 19507WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19508 19509# check trigger-2 success: 1 19510DROP TRIGGER trg_1; 19511UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19512f_int2 = CAST(f_char1 AS SIGNED INT), 19513f_charbig = 'just inserted' 19514 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19515DELETE FROM t0_aux 19516WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19517INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19518SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19519'just inserted' FROM t0_template 19520WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19521CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19522BEGIN 19523UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19524f_charbig = 'updated by trigger' 19525 WHERE f_int1 = new.f_int1; 19526END| 19527UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19528WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19529 19530# check trigger-3 success: 1 19531DROP TRIGGER trg_1; 19532UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19533f_int2 = CAST(f_char1 AS SIGNED INT), 19534f_charbig = 'just inserted' 19535 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19536DELETE FROM t0_aux 19537WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19538INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19539SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19540'just inserted' FROM t0_template 19541WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19542CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 19543BEGIN 19544UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19545f_charbig = 'updated by trigger' 19546 WHERE f_int1 = - old.f_int1; 19547END| 19548UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19549WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19550 19551# check trigger-4 success: 1 19552DROP TRIGGER trg_1; 19553UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19554f_int2 = CAST(f_char1 AS SIGNED INT), 19555f_charbig = 'just inserted' 19556 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19557DELETE FROM t0_aux 19558WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19559INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19560SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19561'just inserted' FROM t0_template 19562WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19563CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19564BEGIN 19565UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19566f_charbig = 'updated by trigger' 19567 WHERE f_int1 = new.f_int1; 19568END| 19569UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19570WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19571 19572# check trigger-5 success: 1 19573DROP TRIGGER trg_1; 19574UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19575f_int2 = CAST(f_char1 AS SIGNED INT), 19576f_charbig = 'just inserted' 19577 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19578DELETE FROM t0_aux 19579WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19580INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19581SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19582'just inserted' FROM t0_template 19583WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19584CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 19585BEGIN 19586UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19587f_charbig = 'updated by trigger' 19588 WHERE f_int1 = - old.f_int1; 19589END| 19590UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 19591WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19592 19593# check trigger-6 success: 1 19594DROP TRIGGER trg_1; 19595UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19596f_int2 = CAST(f_char1 AS SIGNED INT), 19597f_charbig = 'just inserted' 19598 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19599DELETE FROM t0_aux 19600WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19601INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19602SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19603'just inserted' FROM t0_template 19604WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19605CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 19606BEGIN 19607UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19608f_charbig = 'updated by trigger' 19609 WHERE f_int1 = - old.f_int1; 19610END| 19611DELETE FROM t0_aux 19612WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19613 19614# check trigger-7 success: 1 19615DROP TRIGGER trg_1; 19616UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19617f_int2 = CAST(f_char1 AS SIGNED INT), 19618f_charbig = 'just inserted' 19619 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19620DELETE FROM t0_aux 19621WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19622INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19623SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19624'just inserted' FROM t0_template 19625WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19626CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 19627BEGIN 19628UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 19629f_charbig = 'updated by trigger' 19630 WHERE f_int1 = - old.f_int1; 19631END| 19632DELETE FROM t0_aux 19633WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 19634 19635# check trigger-8 success: 1 19636DROP TRIGGER trg_1; 19637UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19638f_int2 = CAST(f_char1 AS SIGNED INT), 19639f_charbig = 'just inserted' 19640 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 19641DELETE FROM t0_aux 19642WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19643DELETE FROM t1 19644WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19645CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19646BEGIN 19647SET new.f_int1 = old.f_int1 + @max_row, 19648new.f_int2 = old.f_int2 - @max_row, 19649new.f_charbig = '####updated per update trigger####'; 19650END| 19651UPDATE t1 19652SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19653f_charbig = '####updated per update statement itself####'; 19654 19655# check trigger-9 success: 1 19656DROP TRIGGER trg_2; 19657UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19658f_int2 = CAST(f_char1 AS SIGNED INT), 19659f_charbig = CONCAT('===',f_char1,'==='); 19660CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 19661BEGIN 19662SET new.f_int1 = new.f_int1 + @max_row, 19663new.f_int2 = new.f_int2 - @max_row, 19664new.f_charbig = '####updated per update trigger####'; 19665END| 19666UPDATE t1 19667SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 19668f_charbig = '####updated per update statement itself####'; 19669 19670# check trigger-10 success: 1 19671DROP TRIGGER trg_2; 19672UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19673f_int2 = CAST(f_char1 AS SIGNED INT), 19674f_charbig = CONCAT('===',f_char1,'==='); 19675CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19676BEGIN 19677SET new.f_int1 = @my_max1 + @counter, 19678new.f_int2 = @my_min2 - @counter, 19679new.f_charbig = '####updated per insert trigger####'; 19680SET @counter = @counter + 1; 19681END| 19682SET @counter = 1; 19683SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19684INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19685SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19686CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19687WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19688ORDER BY f_int1; 19689DROP TRIGGER trg_3; 19690 19691# check trigger-11 success: 1 19692DELETE FROM t1 19693WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19694AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19695AND f_charbig = '####updated per insert trigger####'; 19696CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 19697BEGIN 19698SET new.f_int1 = @my_max1 + @counter, 19699new.f_int2 = @my_min2 - @counter, 19700new.f_charbig = '####updated per insert trigger####'; 19701SET @counter = @counter + 1; 19702END| 19703SET @counter = 1; 19704SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 19705INSERT INTO t1 (f_char1, f_char2, f_charbig) 19706SELECT CAST(f_int1 AS CHAR), 19707CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 19708WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 19709ORDER BY f_int1; 19710DROP TRIGGER trg_3; 19711 19712# check trigger-12 success: 1 19713DELETE FROM t1 19714WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 19715AND f_int2 <> CAST(f_char1 AS SIGNED INT) 19716AND f_charbig = '####updated per insert trigger####'; 19717ANALYZE TABLE t1; 19718Table Op Msg_type Msg_text 19719test.t1 analyze status OK 19720CHECK TABLE t1 EXTENDED; 19721Table Op Msg_type Msg_text 19722test.t1 check status OK 19723CHECKSUM TABLE t1 EXTENDED; 19724Table Checksum 19725test.t1 <some_value> 19726OPTIMIZE TABLE t1; 19727Table Op Msg_type Msg_text 19728test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 19729test.t1 optimize status OK 19730# check layout success: 1 19731REPAIR TABLE t1 EXTENDED; 19732Table Op Msg_type Msg_text 19733test.t1 repair status OK 19734# check layout success: 1 19735TRUNCATE t1; 19736 19737# check TRUNCATE success: 1 19738# check layout success: 1 19739# End usability test (inc/partition_check.inc) 19740DROP TABLE t1; 19741CREATE TABLE t1 ( 19742f_int1 INTEGER, 19743f_int2 INTEGER, 19744f_char1 CHAR(20), 19745f_char2 CHAR(20), 19746f_charbig VARCHAR(1000) 19747, UNIQUE INDEX uidx1 (f_int2,f_int1) 19748) 19749PARTITION BY LIST(ABS(MOD(f_int1,2))) 19750SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 19751(PARTITION part1 VALUES IN (0), 19752PARTITION part2 VALUES IN (1), 19753PARTITION part3 VALUES IN (NULL)); 19754INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19755SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19756WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; 19757ALTER TABLE t1 MODIFY f_int2 BIGINT; 19758INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19759SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template 19760WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; 19761# Start usability test (inc/partition_check.inc) 19762create_command 19763SHOW CREATE TABLE t1; 19764Table Create Table 19765t1 CREATE TABLE `t1` ( 19766 `f_int1` int(11) DEFAULT NULL, 19767 `f_int2` bigint(20) DEFAULT NULL, 19768 `f_char1` char(20) DEFAULT NULL, 19769 `f_char2` char(20) DEFAULT NULL, 19770 `f_charbig` varchar(1000) DEFAULT NULL, 19771 UNIQUE KEY `uidx1` (`f_int2`,`f_int1`) 19772) ENGINE=TokuDB DEFAULT CHARSET=latin1 19773/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) 19774SUBPARTITION BY KEY (f_int1) 19775SUBPARTITIONS 3 19776(PARTITION part1 VALUES IN (0) ENGINE = TokuDB, 19777 PARTITION part2 VALUES IN (1) ENGINE = TokuDB, 19778 PARTITION part3 VALUES IN (NULL) ENGINE = TokuDB) */ 19779 19780# check prerequisites-1 success: 1 19781# check COUNT(*) success: 1 19782# check MIN/MAX(f_int1) success: 1 19783# check MIN/MAX(f_int2) success: 1 19784INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19785SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 19786CAST(f_int1 AS CHAR), 'delete me' FROM t0_template 19787WHERE f_int1 IN (2,3); 19788ERROR 23000: Duplicate entry '2-2' for key 'uidx1' 19789# check prerequisites-3 success: 1 19790# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE 19791INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19792SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19793CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19794WHERE f_int1 IN (2,3); 19795DELETE FROM t1 WHERE f_charbig = 'delete me'; 19796INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19797SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR), 19798CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template 19799WHERE f_int1 IN (2,3); 19800DELETE FROM t1 WHERE f_charbig = 'delete me'; 19801# check read via f_int1 success: 1 19802# check read via f_int2 success: 1 19803 19804# check multiple-1 success: 1 19805DELETE FROM t1 WHERE MOD(f_int1,3) = 0; 19806 19807# check multiple-2 success: 1 19808INSERT INTO t1 SELECT * FROM t0_template 19809WHERE MOD(f_int1,3) = 0; 19810 19811# check multiple-3 success: 1 19812UPDATE t1 SET f_int1 = f_int1 + @max_row 19813WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 19814AND @max_row_div2 + @max_row_div4; 19815 19816# check multiple-4 success: 1 19817DELETE FROM t1 19818WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row 19819AND @max_row_div2 + @max_row_div4 + @max_row; 19820 19821# check multiple-5 success: 1 19822SELECT COUNT(*) INTO @try_count FROM t0_template 19823WHERE MOD(f_int1,3) = 0 19824AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19825SELECT COUNT(*) INTO @clash_count 19826FROM t1 INNER JOIN t0_template USING(f_int1) 19827WHERE MOD(f_int1,3) = 0 19828AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19829SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; 19830INSERT INTO t1 19831SET f_int1 = @cur_value , f_int2 = @cur_value, 19832f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19833f_charbig = '#SINGLE#'; 19834 19835# check single-1 success: 1 19836SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; 19837INSERT INTO t1 19838SET f_int1 = @cur_value , f_int2 = @cur_value, 19839f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), 19840f_charbig = '#SINGLE#'; 19841 19842# check single-2 success: 1 19843SELECT MIN(f_int1) INTO @cur_value1 FROM t1; 19844SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; 19845UPDATE t1 SET f_int1 = @cur_value2 19846WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; 19847 19848# check single-3 success: 1 19849SET @cur_value1= -1; 19850SELECT MAX(f_int1) INTO @cur_value2 FROM t1; 19851UPDATE t1 SET f_int1 = @cur_value1 19852WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; 19853 19854# check single-4 success: 1 19855SELECT MAX(f_int1) INTO @cur_value FROM t1; 19856DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; 19857 19858# check single-5 success: 1 19859DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; 19860 19861# check single-6 success: 1 19862INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; 19863 19864# check single-7 success: 1 19865DELETE FROM t1 WHERE f_charbig = '#2147483647##'; 19866DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; 19867INSERT t1 SET f_int1 = 0 , f_int2 = 0, 19868f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), 19869f_charbig = '#NULL#'; 19870INSERT INTO t1 19871SET f_int1 = NULL , f_int2 = -@max_row, 19872f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), 19873f_charbig = '#NULL#'; 19874# check null success: 1 19875 19876# check null-1 success: 1 19877UPDATE t1 SET f_int1 = -@max_row 19878WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19879AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19880 19881# check null-2 success: 1 19882UPDATE t1 SET f_int1 = NULL 19883WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19884AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19885 19886# check null-3 success: 1 19887DELETE FROM t1 19888WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) 19889AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; 19890 19891# check null-4 success: 1 19892DELETE FROM t1 19893WHERE f_int1 = 0 AND f_int2 = 0 19894AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) 19895AND f_charbig = '#NULL#'; 19896INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19897SELECT f_int1, f_int1, '', '', 'was inserted' 19898 FROM t0_template source_tab 19899WHERE MOD(f_int1,3) = 0 19900AND f_int1 BETWEEN @max_row_div2 AND @max_row 19901ON DUPLICATE KEY 19902UPDATE f_int1 = 2 * @max_row + source_tab.f_int1, 19903f_int2 = 2 * @max_row + source_tab.f_int1, 19904f_charbig = 'was updated'; 19905 19906# check unique-1-a success: 1 19907 19908# check unique-1-b success: 1 19909DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19910UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 19911f_int2 = CAST(f_char1 AS SIGNED INT), 19912f_charbig = CONCAT('===',f_char1,'===') 19913WHERE f_charbig = 'was updated'; 19914REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19915SELECT f_int1, - f_int1, '', '', 'was inserted or replaced' 19916 FROM t0_template source_tab 19917WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row; 19918 19919# check replace success: 1 19920DELETE FROM t1 19921WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4; 19922DELETE FROM t1 19923WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND 19924f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row; 19925UPDATE t1 SET f_int2 = f_int1, 19926f_char1 = CAST(f_int1 AS CHAR), 19927f_char2 = CAST(f_int1 AS CHAR), 19928f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===') 19929WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2; 19930SET AUTOCOMMIT= 0; 19931INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19932SELECT f_int1, f_int1, '', '', 'was inserted' 19933FROM t0_template source_tab 19934WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19935 19936# check transactions-1 success: 1 19937COMMIT WORK; 19938 19939# check transactions-2 success: 1 19940ROLLBACK WORK; 19941 19942# check transactions-3 success: 1 19943DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19944COMMIT WORK; 19945ROLLBACK WORK; 19946 19947# check transactions-4 success: 1 19948INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19949SELECT f_int1, f_int1, '', '', 'was inserted' 19950FROM t0_template source_tab 19951WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19952 19953# check transactions-5 success: 1 19954ROLLBACK WORK; 19955 19956# check transactions-6 success: 1 19957# INFO: Storage engine used for t1 seems to be transactional. 19958COMMIT; 19959 19960# check transactions-7 success: 1 19961DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19962COMMIT WORK; 19963SET @@session.sql_mode = 'traditional'; 19964Warnings: 19965Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19966SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; 19967INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 19968SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, 19969'', '', 'was inserted' FROM t0_template 19970WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; 19971ERROR 22012: Division by 0 19972COMMIT; 19973 19974# check transactions-8 success: 1 19975# INFO: Storage engine used for t1 seems to be able to revert 19976# changes made by the failing statement. 19977SET @@session.sql_mode = ''; 19978Warnings: 19979Warning 3090 Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release. 19980SET AUTOCOMMIT= 1; 19981DELETE FROM t1 WHERE f_charbig = 'was inserted'; 19982COMMIT WORK; 19983UPDATE t1 SET f_charbig = REPEAT('b', 1000); 19984 19985# check special-1 success: 1 19986UPDATE t1 SET f_charbig = ''; 19987 19988# check special-2 success: 1 19989UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); 19990INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) 19991SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template 19992WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19993INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 19994SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 19995'just inserted' FROM t0_template 19996WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 19997CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW 19998BEGIN 19999UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20000f_charbig = 'updated by trigger' 20001 WHERE f_int1 = new.f_int1; 20002END| 20003INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20004SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20005WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20006 20007# check trigger-1 success: 1 20008DROP TRIGGER trg_1; 20009UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20010f_int2 = CAST(f_char1 AS SIGNED INT), 20011f_charbig = 'just inserted' 20012 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20013DELETE FROM t0_aux 20014WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20015INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20016SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20017'just inserted' FROM t0_template 20018WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20019CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW 20020BEGIN 20021UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20022f_charbig = 'updated by trigger' 20023 WHERE f_int1 = new.f_int1; 20024END| 20025INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20026SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template 20027WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20028 20029# check trigger-2 success: 1 20030DROP TRIGGER trg_1; 20031UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20032f_int2 = CAST(f_char1 AS SIGNED INT), 20033f_charbig = 'just inserted' 20034 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20035DELETE FROM t0_aux 20036WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20037INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20038SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20039'just inserted' FROM t0_template 20040WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20041CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20042BEGIN 20043UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20044f_charbig = 'updated by trigger' 20045 WHERE f_int1 = new.f_int1; 20046END| 20047UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20048WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20049 20050# check trigger-3 success: 1 20051DROP TRIGGER trg_1; 20052UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20053f_int2 = CAST(f_char1 AS SIGNED INT), 20054f_charbig = 'just inserted' 20055 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20056DELETE FROM t0_aux 20057WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20058INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20059SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20060'just inserted' FROM t0_template 20061WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20062CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW 20063BEGIN 20064UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20065f_charbig = 'updated by trigger' 20066 WHERE f_int1 = - old.f_int1; 20067END| 20068UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20069WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20070 20071# check trigger-4 success: 1 20072DROP TRIGGER trg_1; 20073UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20074f_int2 = CAST(f_char1 AS SIGNED INT), 20075f_charbig = 'just inserted' 20076 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20077DELETE FROM t0_aux 20078WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20079INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20080SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20081'just inserted' FROM t0_template 20082WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20083CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20084BEGIN 20085UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20086f_charbig = 'updated by trigger' 20087 WHERE f_int1 = new.f_int1; 20088END| 20089UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20090WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20091 20092# check trigger-5 success: 1 20093DROP TRIGGER trg_1; 20094UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20095f_int2 = CAST(f_char1 AS SIGNED INT), 20096f_charbig = 'just inserted' 20097 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20098DELETE FROM t0_aux 20099WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20100INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20101SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20102'just inserted' FROM t0_template 20103WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20104CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW 20105BEGIN 20106UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20107f_charbig = 'updated by trigger' 20108 WHERE f_int1 = - old.f_int1; 20109END| 20110UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 20111WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20112 20113# check trigger-6 success: 1 20114DROP TRIGGER trg_1; 20115UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20116f_int2 = CAST(f_char1 AS SIGNED INT), 20117f_charbig = 'just inserted' 20118 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20119DELETE FROM t0_aux 20120WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20121INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20122SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20123'just inserted' FROM t0_template 20124WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20125CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW 20126BEGIN 20127UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20128f_charbig = 'updated by trigger' 20129 WHERE f_int1 = - old.f_int1; 20130END| 20131DELETE FROM t0_aux 20132WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20133 20134# check trigger-7 success: 1 20135DROP TRIGGER trg_1; 20136UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20137f_int2 = CAST(f_char1 AS SIGNED INT), 20138f_charbig = 'just inserted' 20139 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20140DELETE FROM t0_aux 20141WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20142INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) 20143SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), 20144'just inserted' FROM t0_template 20145WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20146CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW 20147BEGIN 20148UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, 20149f_charbig = 'updated by trigger' 20150 WHERE f_int1 = - old.f_int1; 20151END| 20152DELETE FROM t0_aux 20153WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); 20154 20155# check trigger-8 success: 1 20156DROP TRIGGER trg_1; 20157UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20158f_int2 = CAST(f_char1 AS SIGNED INT), 20159f_charbig = 'just inserted' 20160 WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); 20161DELETE FROM t0_aux 20162WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20163DELETE FROM t1 20164WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; 20165CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20166BEGIN 20167SET new.f_int1 = old.f_int1 + @max_row, 20168new.f_int2 = old.f_int2 - @max_row, 20169new.f_charbig = '####updated per update trigger####'; 20170END| 20171UPDATE t1 20172SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20173f_charbig = '####updated per update statement itself####'; 20174 20175# check trigger-9 success: 1 20176DROP TRIGGER trg_2; 20177UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20178f_int2 = CAST(f_char1 AS SIGNED INT), 20179f_charbig = CONCAT('===',f_char1,'==='); 20180CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW 20181BEGIN 20182SET new.f_int1 = new.f_int1 + @max_row, 20183new.f_int2 = new.f_int2 - @max_row, 20184new.f_charbig = '####updated per update trigger####'; 20185END| 20186UPDATE t1 20187SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, 20188f_charbig = '####updated per update statement itself####'; 20189 20190# check trigger-10 success: 1 20191DROP TRIGGER trg_2; 20192UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), 20193f_int2 = CAST(f_char1 AS SIGNED INT), 20194f_charbig = CONCAT('===',f_char1,'==='); 20195CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20196BEGIN 20197SET new.f_int1 = @my_max1 + @counter, 20198new.f_int2 = @my_min2 - @counter, 20199new.f_charbig = '####updated per insert trigger####'; 20200SET @counter = @counter + 1; 20201END| 20202SET @counter = 1; 20203SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20204INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) 20205SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), 20206CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20207WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20208ORDER BY f_int1; 20209DROP TRIGGER trg_3; 20210 20211# check trigger-11 success: 1 20212DELETE FROM t1 20213WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20214AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20215AND f_charbig = '####updated per insert trigger####'; 20216CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW 20217BEGIN 20218SET new.f_int1 = @my_max1 + @counter, 20219new.f_int2 = @my_min2 - @counter, 20220new.f_charbig = '####updated per insert trigger####'; 20221SET @counter = @counter + 1; 20222END| 20223SET @counter = 1; 20224SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; 20225INSERT INTO t1 (f_char1, f_char2, f_charbig) 20226SELECT CAST(f_int1 AS CHAR), 20227CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template 20228WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 20229ORDER BY f_int1; 20230DROP TRIGGER trg_3; 20231 20232# check trigger-12 success: 1 20233DELETE FROM t1 20234WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) 20235AND f_int2 <> CAST(f_char1 AS SIGNED INT) 20236AND f_charbig = '####updated per insert trigger####'; 20237ANALYZE TABLE t1; 20238Table Op Msg_type Msg_text 20239test.t1 analyze status OK 20240CHECK TABLE t1 EXTENDED; 20241Table Op Msg_type Msg_text 20242test.t1 check status OK 20243CHECKSUM TABLE t1 EXTENDED; 20244Table Checksum 20245test.t1 <some_value> 20246OPTIMIZE TABLE t1; 20247Table Op Msg_type Msg_text 20248test.t1 optimize note Table does not support optimize, doing recreate + analyze instead 20249test.t1 optimize status OK 20250# check layout success: 1 20251REPAIR TABLE t1 EXTENDED; 20252Table Op Msg_type Msg_text 20253test.t1 repair status OK 20254# check layout success: 1 20255TRUNCATE t1; 20256 20257# check TRUNCATE success: 1 20258# check layout success: 1 20259# End usability test (inc/partition_check.inc) 20260DROP TABLE t1; 20261DROP VIEW IF EXISTS v1; 20262DROP TABLE IF EXISTS t1; 20263DROP TABLE IF EXISTS t0_aux; 20264DROP TABLE IF EXISTS t0_definition; 20265DROP TABLE IF EXISTS t0_template; 20266