polardbxengine/mysql-test/suite/xengine_main/t/partition_myisam.test

153 lines
6.8 KiB
Plaintext

--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