--source include/have_myisam.inc --echo # --echo # Bug #27816: Log tables ran with partitions crashes the server when logging --echo # is enabled. --echo # USE mysql; TRUNCATE TABLE general_log; SET @old_general_log_state = @@global.general_log; SET GLOBAL general_log = 0; ALTER TABLE general_log ENGINE = MyISAM; --error ER_WRONG_USAGE ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time)) (PARTITION p0 VALUES LESS THAN (733144), PARTITION p1 VALUES LESS THAN (3000000)); ALTER TABLE general_log ENGINE = CSV; SET GLOBAL general_log = @old_general_log_state; USE test; --echo # --echo # Bug#31931: Mix of handlers error message --echo # --error ER_MIX_HANDLER_ERROR CREATE TABLE t1 (a INT) PARTITION BY HASH (a) ( PARTITION p0 ENGINE=MyISAM, PARTITION p1); --error ER_MIX_HANDLER_ERROR CREATE TABLE t1 (a INT) PARTITION BY LIST (a) SUBPARTITION BY HASH (a) ( PARTITION p0 VALUES IN (0) ( SUBPARTITION s0, SUBPARTITION s1 ENGINE=MyISAM, SUBPARTITION s2), PARTITION p1 VALUES IN (1) ( SUBPARTITION s3 ENGINE=MyISAM, SUBPARTITION s4, SUBPARTITION s5 ENGINE=MyISAM)); --echo # --echo # bug#11760213-52599: ALTER TABLE REMOVE PARTITIONING ON NON-PARTITIONED --echo # TABLE CORRUPTS MYISAM CREATE TABLE `t1`(`a` INT)ENGINE=myisam; ALTER TABLE `t1` ADD COLUMN `b` INT; CREATE UNIQUE INDEX `i1` ON `t1`(`b`); CREATE UNIQUE INDEX `i2` ON `t1`(`a`); ALTER TABLE `t1` ADD PRIMARY KEY (`a`); --error ER_PARTITION_MGMT_ON_NONPARTITIONED ALTER TABLE `t1` REMOVE PARTITIONING; CHECK TABLE `t1` EXTENDED; DROP TABLE t1; --echo # --echo # WL#1074 - Descending index support. --echo # CREATE TABLE t1 (a VARCHAR(10), b VARCHAR(10), PRIMARY KEY (a DESC, b DESC), KEY ab_asc (a ASC, b ASC), KEY a_asc_b_desc (a ASC, b DESC), key a_desc_b_asc (a DESC, b ASC)) ENGINE = InnoDB PARTITION BY KEY (a, b) PARTITIONS 3; INSERT INTO t1 VALUES ("0", "0"), ("1", "1"), ("2", "2"), ("3", "3"), ("4", "4"), ("55", "55"), ("54", "54"), ("1", "2"), ("1", "4"), ("1", "3"), ("55", "54"), ("0", "1"); ANALYZE TABLE t1; --echo # Test non ordered index access FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`PRIMARY`); SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`ab_asc`); SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`a_asc_b_desc`); SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`a_desc_b_asc`); SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; --echo # Test sorted index access FLUSH STATUS; SELECT * FROM t1 ORDER BY a DESC, b DESC; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 ORDER BY a, b; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 ORDER BY a, b DESC; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 ORDER BY a DESC, b; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 ORDER BY a DESC, b DESC; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 ORDER BY a, b; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 ORDER BY a, b DESC; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 ORDER BY a DESC, b; --echo # Test index access in different sort order FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a, b; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a DESC, b; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a, b DESC; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; FLUSH STATUS; SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a DESC, b; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a, b; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a DESC, b; --replace_regex /"rows_examined_per_scan": [0-9]+/"rows_examined_per_scan": "X"/ /_per_join": [0-9]+/_per_join": "X"/ /_per_join": "[0-9]+K"/_per_join": "X"/ /"filtered": "[0-9.]+"/"filtered": "X"/ /_cost": "[0-9.]+"/_cost": "X"/ /"data_read_per_join": "[0-9.]+"/"data_read_per_join": "X"/ EXPLAIN FORMAT=JSON SELECT * FROM t1 FORCE INDEX (`PRIMARY`) ORDER BY a, b DESC; --echo # Test HANDLER statements. FLUSH STATUS; HANDLER t1 OPEN; HANDLER t1 READ `PRIMARY` FIRST; HANDLER t1 READ `PRIMARY` NEXT; HANDLER t1 READ `PRIMARY` NEXT; HANDLER t1 READ `PRIMARY` NEXT; HANDLER t1 READ `PRIMARY` NEXT; HANDLER t1 READ `PRIMARY` LAST; HANDLER t1 READ `PRIMARY` PREV; HANDLER t1 READ `PRIMARY` PREV; HANDLER t1 READ `PRIMARY` PREV; HANDLER t1 READ ab_asc FIRST; HANDLER t1 READ ab_asc NEXT; HANDLER t1 READ ab_asc NEXT; HANDLER t1 READ ab_asc NEXT; HANDLER t1 READ ab_asc NEXT; HANDLER t1 READ ab_asc LAST; HANDLER t1 READ ab_asc PREV; HANDLER t1 READ ab_asc PREV; HANDLER t1 READ ab_asc PREV; HANDLER t1 CLOSE; SHOW STATUS WHERE Variable_name LIKE 'Handler%' AND Value >0; DROP TABLE t1; --source suite/xengine/include/check_xengine_log_error.inc