3886 Marko Mäkelä 2012-04-23
Bug#13875241 NONDETERMINISM IN INNODB-INDEX-ONLINE.TEST
The index cardinality statistics would sometimes show one more entry
for the PRIMARY KEY, depending on whether the row affected by the
DELETE statement was purged. Adjust the statistics and results.
Remove the generation of the DBUG trace (ds.trace), as it is no longer
needed.
modified:
mysql-test/suite/innodb/r/innodb-index-online.result
mysql-test/suite/innodb/t/innodb-index-online.test
3885 Marko Mäkelä 2012-04-23
Correct a typo in a comment.
modified:
storage/innobase/row/row0merge.cc
3884 Mayank Prasad 2012-04-23
finxing test case bug12427262 result file.
modified:
mysql-test/r/bug12427262.result
=== modified file 'mysql-test/suite/innodb/r/innodb-index-online.result'
--- a/mysql-test/suite/innodb/r/innodb-index-online.result revid:mayank.prasad@stripped0423041704-a7mo50u0gi35g373
+++ b/mysql-test/suite/innodb/r/innodb-index-online.result revid:marko.makela@strippedom-20120423072546-6ir7raovf9tjqzxs
@@ -1,6 +1,4 @@
-SET GLOBAL DEBUG='d,query,debug_sync_exec:i:t:A,ds.trace';
SET DEBUG='+d,debug_sync_abort_on_timeout';
-SET DEBUG='d,query,debug_sync_exec:i:t:A,ds.trace';
call mtr.add_suppression("InnoDB: Warning: Small buffer pool size");
call mtr.add_suppression("Cannot find index .*c2 in InnoDB index translation table");
call mtr.add_suppression("Find index .*c2 in InnoDB index list but not its MySQL index number");
@@ -20,7 +18,6 @@ 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='+d,debug_sync_abort_on_timeout';
-SET DEBUG='d,query,debug_sync_exec:i:t:A,ds.trace';
SET DEBUG_SYNC='now WAIT_FOR have_handle';
SET lock_wait_timeout=1;
ALTER TABLE t1 ADD UNIQUE INDEX(c2);
@@ -99,6 +96,9 @@ SET SESSION innodb_analyze_is_persistent
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;
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
=== modified file 'mysql-test/suite/innodb/t/innodb-index-online.test'
--- a/mysql-test/suite/innodb/t/innodb-index-online.test revid:mayank.prasad@stripped
+++ b/mysql-test/suite/innodb/t/innodb-index-online.test revid:marko.makela@stripped
@@ -1,9 +1,7 @@
--source include/have_innodb.inc
--source include/have_debug_sync.inc
-SET GLOBAL DEBUG='d,query,debug_sync_exec:i:t:A,ds.trace';
SET DEBUG='+d,debug_sync_abort_on_timeout';
-SET DEBUG='d,query,debug_sync_exec:i:t:A,ds.trace';
call mtr.add_suppression("InnoDB: Warning: Small buffer pool size");
# These will be triggered by INSERT INTO t1 VALUES(6,3,1);
@@ -35,7 +33,6 @@ connect (con1,localhost,root,,);
connection con1;
SET DEBUG='+d,debug_sync_abort_on_timeout';
-SET DEBUG='d,query,debug_sync_exec:i:t:A,ds.trace';
# This should block at the end because of the INSERT in connection default
# is holding a metadata lock.
SET DEBUG_SYNC='now WAIT_FOR have_handle';
@@ -125,6 +122,10 @@ INSERT INTO t1 VALUES(6,3,1);
INSERT INTO t1 VALUES(7,4,2);
SET SESSION innodb_analyze_is_persistent=1;
ANALYZE TABLE t1;
+# Purge may or may not have cleaned up the DELETE FROM t1 WHERE c1=7;
+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;
--replace_column 4 LAST_UPDATE
SELECT * FROM mysql.innodb_index_stats;
CREATE TABLE t1_c2_stats SELECT * FROM mysql.innodb_index_stats
@@ -160,6 +161,8 @@ 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;
+# Purge may or may not have cleaned up the DELETE FROM t1 WHERE c1=7;
+--replace_result 6 5
EXPLAIN SELECT COUNT(*) FROM t1 WHERE c2>3;
ANALYZE TABLE t1;
=== modified file 'storage/innobase/row/row0merge.cc'
--- a/storage/innobase/row/row0merge.cc revid:mayank.prasad@stripped
+++ b/storage/innobase/row/row0merge.cc revid:marko.makela@oracle.com-20120423072546-6ir7raovf9tjqzxs
@@ -2473,7 +2473,7 @@ row_merge_drop_index_dict(
if (error != DB_SUCCESS) {
/* Even though we ensure that DDL transactions are WAIT
and DEADLOCK free, we could encounter other errors e.g.,
- DB_TOO_MANY_TRANSACTIONS. */
+ DB_TOO_MANY_CONCURRENT_TRXS. */
trx->error_state = DB_SUCCESS;
ut_print_timestamp(stderr);
@@ -2545,7 +2545,7 @@ row_merge_drop_indexes_dict(
if (error != DB_SUCCESS) {
/* Even though we ensure that DDL transactions are WAIT
and DEADLOCK free, we could encounter other errors e.g.,
- DB_TOO_MANY_TRANSACTIONS. */
+ DB_TOO_MANY_CONCURRENT_TRXS. */
trx->error_state = DB_SUCCESS;
ut_print_timestamp(stderr);
@@ -2739,7 +2739,7 @@ row_merge_drop_temp_indexes(void)
if (error != DB_SUCCESS) {
/* Even though we ensure that DDL transactions are WAIT
and DEADLOCK free, we could encounter other errors e.g.,
- DB_TOO_MANY_TRANSACTIONS. */
+ DB_TOO_MANY_CONCURRENT_TRXS. */
trx->error_state = DB_SUCCESS;
ut_print_timestamp(stderr);
@@ -2871,7 +2871,7 @@ row_merge_rename_index_to_add(
if (err != DB_SUCCESS) {
/* Even though we ensure that DDL transactions are WAIT
and DEADLOCK free, we could encounter other errors e.g.,
- DB_TOO_MANY_TRANSACTIONS. */
+ DB_TOO_MANY_CONCURRENT_TRXS. */
trx->error_state = DB_SUCCESS;
ut_print_timestamp(stderr);
@@ -2926,7 +2926,7 @@ row_merge_rename_index_to_drop(
if (err != DB_SUCCESS) {
/* Even though we ensure that DDL transactions are WAIT
and DEADLOCK free, we could encounter other errors e.g.,
- DB_TOO_MANY_TRANSACTIONS. */
+ DB_TOO_MANY_CONCURRENT_TRXS. */
trx->error_state = DB_SUCCESS;
ut_print_timestamp(stderr);
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-trunk branch (marko.makela:3884 to 3886) Bug#13875241 | marko.makela | 23 Apr |