Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/r/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //home/usr.opt/mysql57/mysql-test/suite/innodb/r/innodb-index-online.result |
SET @global_innodb_file_per_table_orig = @@global.innodb_file_per_table; SET GLOBAL innodb_file_per_table = on; CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 TEXT) ENGINE=InnoDB STATS_PERSISTENT=0; INSERT INTO t1 VALUES (1,1,''), (2,2,''), (3,3,''), (4,4,''), (5,5,''); SET GLOBAL innodb_monitor_enable = module_ddl; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET DEBUG_SYNC = 'RESET'; SET DEBUG_SYNC = 'write_row_noreplace SIGNAL have_handle WAIT_FOR go_ahead'; INSERT INTO t1 VALUES(1,2,3); SET DEBUG_SYNC = 'now WAIT_FOR have_handle'; SET lock_wait_timeout = 1; ALTER TABLE t1 ADD UNIQUE INDEX(c2); ERROR HY000: Lock wait timeout exceeded; try restarting transaction SET DEBUG_SYNC = 'now SIGNAL go_ahead'; ERROR 23000: Duplicate entry '1' for key 'PRIMARY' SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET GLOBAL innodb_monitor_reset = module_ddl; SET SESSION DEBUG = '+d,innodb_OOM_prepare_inplace_alter'; ALTER TABLE t1 ADD UNIQUE INDEX(c2); ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space SET SESSION DEBUG = '-d,innodb_OOM_prepare_inplace_alter'; SET SESSION DEBUG = '+d,innodb_OOM_inplace_alter'; CREATE UNIQUE INDEX c2 ON t1(c2); ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space SET SESSION DEBUG = '-d,innodb_OOM_inplace_alter'; CREATE UNIQUE INDEX c2 ON t1(c2); DROP INDEX c2 ON t1; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, `c3` text, PRIMARY KEY (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=0 BEGIN; INSERT INTO t1 VALUES(7,4,2); SET DEBUG_SYNC = 'row_log_apply_before SIGNAL scanned WAIT_FOR rollback_done'; ALTER TABLE t1 ADD UNIQUE INDEX(c2); ERROR HY000: Lock wait timeout exceeded; try restarting transaction COMMIT; ALTER TABLE t1 ADD UNIQUE INDEX(c2); ERROR 23000: Duplicate entry '4' for key 'c2' DELETE FROM t1 WHERE c1 = 7; ALTER TABLE t1 ADD FOREIGN KEY(c2) REFERENCES t1(c2), ALGORITHM = INPLACE; ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Adding foreign keys needs foreign_key_checks=OFF. Try ALGORITHM=COPY. ALTER TABLE t1 ADD UNIQUE INDEX(c2), LOCK = EXCLUSIVE, ALGORITHM = INPLACE; DROP INDEX c2 ON t1; ALTER TABLE t1 ADD UNIQUE INDEX(c2); SET DEBUG_SYNC = 'now WAIT_FOR scanned'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_online_create_index 1 ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; BEGIN; INSERT INTO t1 VALUES(7,4,2); ROLLBACK; SET DEBUG_SYNC = 'now SIGNAL rollback_done'; ERROR 23000: Duplicate entry '4' for key 'c2' SET DEBUG_SYNC = 'row_log_apply_after SIGNAL created WAIT_FOR dml_done'; ALTER TABLE t1 ADD UNIQUE INDEX(c2); SET DEBUG_SYNC = 'now WAIT_FOR created'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; INSERT INTO t1 VALUES(6,3,1); SET DEBUG_SYNC = 'now SIGNAL dml_done'; ERROR 23000: Duplicate entry for key 'c2' DELETE FROM t1 WHERE c1=6; ALTER TABLE t1 ADD UNIQUE INDEX(c2); SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET GLOBAL innodb_monitor_reset = module_ddl; INSERT INTO t1 VALUES(6,3,1); ERROR 23000: Duplicate entry '3' for key 'c2' INSERT INTO t1 VALUES(7,4,2); ERROR 23000: Duplicate entry '4' for key 'c2' ALTER TABLE t1 STATS_PERSISTENT=1; ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK UPDATE mysql.innodb_index_stats SET stat_value = 5 WHERE database_name = 'test' AND table_name= 't1' AND index_name = 'PRIMARY' AND stat_value = 6; SELECT * FROM mysql.innodb_index_stats WHERE table_name IN ('t1'); database_name table_name index_name last_update stat_name stat_value sample_size stat_description test t1 PRIMARY LAST_UPDATE n_diff_pfx01 5 1 c1 test t1 PRIMARY LAST_UPDATE n_leaf_pages 1 NULL Number of leaf pages in the index test t1 PRIMARY LAST_UPDATE size 1 NULL Number of pages in the index test t1 c2 LAST_UPDATE n_diff_pfx01 5 1 c2 test t1 c2 LAST_UPDATE n_leaf_pages 1 NULL Number of leaf pages in the index test t1 c2 LAST_UPDATE size 1 NULL Number of pages in the index CREATE TABLE t1_c2_stats SELECT * FROM mysql.innodb_index_stats WHERE database_name = 'test' AND table_name = 't1' and index_name = 'c2'; ALTER TABLE t1_c2_stats ENGINE=INNODB; DROP INDEX c2 ON t1; ANALYZE TABLE t1_c2_stats; Table Op Msg_type Msg_text test.t1_c2_stats analyze status OK SELECT * FROM mysql.innodb_index_stats WHERE table_name IN ('t1', 't1_c2_stats'); database_name table_name index_name last_update stat_name stat_value sample_size stat_description test t1 PRIMARY LAST_UPDATE n_diff_pfx01 5 1 c1 test t1 PRIMARY LAST_UPDATE n_leaf_pages 1 NULL Number of leaf pages in the index test t1 PRIMARY LAST_UPDATE size 1 NULL Number of pages in the index test t1_c2_stats GEN_CLUST_INDEX LAST_UPDATE n_diff_pfx01 3 1 DB_ROW_ID test t1_c2_stats GEN_CLUST_INDEX LAST_UPDATE n_leaf_pages 1 NULL Number of leaf pages in the index test t1_c2_stats GEN_CLUST_INDEX LAST_UPDATE size 1 NULL Number of pages in the index KILL QUERY @id; ERROR 70100: Query execution was interrupted SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2d_created WAIT_FOR kill_done'; CREATE INDEX c2d ON t1(c2); SET DEBUG_SYNC = 'now WAIT_FOR c2d_created'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_online_create_index 1 ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; KILL QUERY @id; SET DEBUG_SYNC = 'now SIGNAL kill_done'; ERROR 70100: Query execution was interrupted SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET GLOBAL innodb_monitor_reset = module_ddl; CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK INSERT INTO t1 SELECT 5 + c1, c2, c3 FROM t1; INSERT INTO t1 SELECT 10 + c1, c2, c3 FROM t1; INSERT INTO t1 SELECT 20 + c1, c2, c3 FROM t1; INSERT INTO t1 SELECT 40 + c1, c2, c3 FROM t1; EXPLAIN SELECT COUNT(*) FROM t1 WHERE c2 > 3; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 80 33.33 Using where Warnings: Note 1003 /* select#1 */ select count(0) AS `COUNT(*)` from `test`.`t1` where (`test`.`t1`.`c2` > 3) ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK UPDATE t1_c2_stats SET index_name = 'c2d'; UPDATE t1_c2_stats SET stat_value = 2 WHERE stat_name = 'n_diff_pfx01'; INSERT INTO t1_c2_stats SELECT database_name, table_name, index_name, last_update, 'n_diff_pfx02', 80, sample_size, 'c2,c1' FROM t1_c2_stats WHERE stat_name = 'n_diff_pfx01' AND stat_description = 'c2'; INSERT INTO mysql.innodb_index_stats SELECT * FROM t1_c2_stats; DROP TABLE t1_c2_stats; CREATE INDEX c2d ON t1(c2); SHOW INDEX FROM t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment t1 0 PRIMARY 1 c1 A 80 NULL NULL BTREE t1 1 c2d 1 c2 A 5 NULL NULL YES BTREE EXPLAIN SELECT COUNT(*) FROM t1 WHERE c2 > 3; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL range c2d c2d 5 NULL 32 100.00 Using where; Using index Warnings: Note 1003 /* select#1 */ select count(0) AS `COUNT(*)` from `test`.`t1` where (`test`.`t1`.`c2` > 3) SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, `c3` text, PRIMARY KEY (`c1`), KEY `c2d` (`c2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=1 SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2e_created WAIT_FOR dml2_done'; SET lock_wait_timeout = 10; ALTER TABLE t1 CHANGE c2 c22 INT, DROP INDEX c2d, ADD INDEX c2e(c22), ALGORITHM = INPLACE; INSERT INTO t1 SELECT 80 + c1, c2, c3 FROM t1; INSERT INTO t1 SELECT 160 + c1, c2, c3 FROM t1; UPDATE t1 SET c2 = c2 + 1; SET DEBUG_SYNC = 'now WAIT_FOR c2e_created'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_online_create_index 1 ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; BEGIN; DELETE FROM t1; ROLLBACK; UPDATE t1 SET c2 = c2 + 1; BEGIN; UPDATE t1 SET c2 = c2 + 1; DELETE FROM t1; ROLLBACK; BEGIN; DELETE FROM t1; ROLLBACK; UPDATE t1 SET c2 = c2 + 1; BEGIN; UPDATE t1 SET c2 = c2 + 1; DELETE FROM t1; ROLLBACK; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_online_create_index 1 ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; SELECT sf.name, sf.pos FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES si INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf ON si.index_id = sf.index_id WHERE si.name = '?c2e'; name pos c2 0 SET DEBUG_SYNC = 'now SIGNAL dml2_done'; ERROR HY000: Creating index 'c2e' required more than 'innodb_online_alter_log_max_size' bytes of modification log. Please try again. SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_background_drop_indexes 1 SET GLOBAL innodb_monitor_reset = module_ddl; SELECT sf.name, sf.pos FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES si INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf ON si.index_id = sf.index_id WHERE si.name = 'c2e'; name pos SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_background_drop_indexes 1 SET GLOBAL innodb_monitor_reset = module_ddl; ALTER TABLE t1 COMMENT 'testing if c2e will be dropped'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET GLOBAL innodb_monitor_reset = module_ddl; SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2f_created WAIT_FOR dml3_done'; ALTER TABLE t1 ADD INDEX c2f(c22f), CHANGE c2 c22f INT; SET DEBUG_SYNC = 'now WAIT_FOR c2f_created'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_online_create_index 1 ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; BEGIN; INSERT INTO t1 SELECT 320 + c1, c2, c3 FROM t1 WHERE c1 > 160; DELETE FROM t1 WHERE c1 > 320; ROLLBACK; BEGIN; UPDATE t1 SET c2 = c2 + 1; DELETE FROM t1; ROLLBACK; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_online_create_index 1 ddl_pending_alter_table 1 SET GLOBAL innodb_monitor_reset = module_ddl; SET DEBUG_SYNC = 'now SIGNAL dml3_done'; Warnings: Warning 1831 Duplicate index 'c2f' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release. SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET GLOBAL innodb_monitor_reset = module_ddl; SELECT COUNT(c22f) FROM t1; COUNT(c22f) 320 CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK ALTER TABLE t1 ADD UNIQUE INDEX c3p5(c3(5)); ERROR 23000: Duplicate entry 'NULL' for key 'c3p5' UPDATE t1 SET c3 = NULL WHERE c3 = ''; SET lock_wait_timeout = 1; SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c3p5_created WAIT_FOR ins_done'; ALTER TABLE t1 ADD UNIQUE INDEX c3p5(c3(5)); SET DEBUG_SYNC = 'now WAIT_FOR c3p5_created'; SELECT sf.name, sf.pos FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES si INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf ON si.index_id = sf.index_id WHERE si.name = '?c3p5'; name pos c3 0 SET DEBUG_SYNC = 'ib_after_row_insert SIGNAL ins_done WAIT_FOR ddl_timed_out'; INSERT INTO t1 VALUES(347,33101,NULL); ERROR HY000: Lock wait timeout exceeded; try restarting transaction SET DEBUG_SYNC = 'now SIGNAL ddl_timed_out'; SELECT sf.name, sf.pos FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES si INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf ON si.index_id = sf.index_id WHERE si.name = 'c3p5'; name pos SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_background_drop_indexes 1 SET GLOBAL innodb_monitor_reset = module_ddl; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count ddl_background_drop_indexes 1 SET GLOBAL innodb_monitor_reset = module_ddl; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) NOT NULL, `c22f` int(11) DEFAULT NULL, `c3` text, PRIMARY KEY (`c1`), KEY `c2d` (`c22f`), KEY `c2f` (`c22f`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=1 COMMENT='testing if c2e will be dropped' ALTER TABLE t1 DROP INDEX c2d, DROP INDEX c2f; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl' and count > 0; name count SET GLOBAL innodb_monitor_reset = module_ddl; ALTER TABLE t1 ADD INDEX c2h(c22f), ALGORITHM = INPLACE; ALTER TABLE t1 ADD INDEX c2h(c22f), ALGORITHM = COPY; ERROR 42000: Duplicate key name 'c2h' SET DEBUG_SYNC = 'RESET'; SET DEBUG = ''; SET GLOBAL innodb_monitor_disable = module_ddl; DROP TABLE t1; SET GLOBAL DEBUG = ''; SET GLOBAL innodb_file_per_table = @global_innodb_file_per_table_orig; SET GLOBAL innodb_monitor_reset = default; SET GLOBAL innodb_monitor_enable = default; SET GLOBAL innodb_monitor_disable = default;