From f63d8c8d0c4a57b9f77a1c190cde4de7ad91bf81 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 26 Dec 2006 17:47:30 +0400 Subject: BUG#25048 - ERROR 126 : Incorrect key file for table '.XXXX.MYI'; try to repair it Multi-table delete that is optimized with QUICK_RANGE reports table corruption. DELETE statement must not use KEYREAD optimization, and sets table->no_keyread to 1. This was ignored in QUICK_RANGE optimization. With this fix QUICK_RANGE optimization honors table->no_keyread value and does not enable KEYREAD when it is requested. mysql-test/r/index_merge.result: Fixed a test case according to fix for bug#25048. mysql-test/r/index_merge_ror.result: A test case for bug#25048. mysql-test/t/index_merge_ror.test: A test case for bug#25048. sql/opt_range.cc: Do not use key read when head->no_keyread is set. --- mysql-test/r/index_merge.result | 2 +- mysql-test/r/index_merge_ror.result | 11 +++++++++++ mysql-test/t/index_merge_ror.test | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) (limited to 'mysql-test') diff --git a/mysql-test/r/index_merge.result b/mysql-test/r/index_merge.result index 3f3360e2da0..9456b4ec978 100644 --- a/mysql-test/r/index_merge.result +++ b/mysql-test/r/index_merge.result @@ -284,7 +284,7 @@ NULL UNION RESULT ALL NULL NULL NULL NULL NULL explain select * from (select * from t1 where key1 = 3 or key2 =3) as Z where key8 >5; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY system NULL NULL NULL NULL 1 -2 DERIVED t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where +2 DERIVED t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where; Using index create table t3 like t0; insert into t3 select * from t0; alter table t3 add key9 int not null, add index i9(key9); diff --git a/mysql-test/r/index_merge_ror.result b/mysql-test/r/index_merge_ror.result index 69cd11d1dbf..5d08125be53 100644 --- a/mysql-test/r/index_merge_ror.result +++ b/mysql-test/r/index_merge_ror.result @@ -194,3 +194,14 @@ explain select a from t2 where a='ab'; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref a a 6 const 1 Using where drop table t2; +CREATE TABLE t1(c1 INT, c2 INT DEFAULT 0, c3 CHAR(255) DEFAULT '', +KEY(c1), KEY(c2), KEY(c3)); +INSERT INTO t1(c1) VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0), +(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0); +INSERT INTO t1 VALUES(0,0,0); +CREATE TABLE t2(c1 int); +INSERT INTO t2 VALUES(1); +DELETE t1 FROM t1,t2 WHERE t1.c1=0 AND t1.c2=0; +SELECT * FROM t1; +c1 c2 c3 +DROP TABLE t1,t2; diff --git a/mysql-test/t/index_merge_ror.test b/mysql-test/t/index_merge_ror.test index 48fe5526f11..a9de2f955ee 100644 --- a/mysql-test/t/index_merge_ror.test +++ b/mysql-test/t/index_merge_ror.test @@ -250,3 +250,18 @@ select count(a) from t2 ignore index(a,b) where a='AAAAAAAA' and b='AAAAAAAA'; insert into t2 values ('ab', 'ab', 'uh', 'oh'); explain select a from t2 where a='ab'; drop table t2; + +# +# BUG#25048 - ERROR 126 : Incorrect key file for table '.XXXX.MYI'; try to +# repair it +# +CREATE TABLE t1(c1 INT, c2 INT DEFAULT 0, c3 CHAR(255) DEFAULT '', +KEY(c1), KEY(c2), KEY(c3)); +INSERT INTO t1(c1) VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0), +(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0); +INSERT INTO t1 VALUES(0,0,0); +CREATE TABLE t2(c1 int); +INSERT INTO t2 VALUES(1); +DELETE t1 FROM t1,t2 WHERE t1.c1=0 AND t1.c2=0; +SELECT * FROM t1; +DROP TABLE t1,t2; -- cgit v1.2.1