Commit e953b039 authored by vasil's avatar vasil

branches/5.1:

Merge change from MySQL AB:

ChangeSet@1.2612, 2007-11-07 19:59:58+04:00, ramil@mysql.com +6 -0
  Fix for bug #26447: "ALTER TABLE .. ORDER" does not work with InnoDB
  and auto_increment keys

  Problems:
    1. ALTER TABLE ... ORDER BY... doesn't make sence if there's a
       user-defined clustered index in the table.
    2. using a secondary index is slower than using a clustered one
       for a table scan.

  Fixes:
    1. raise a warning.
    2. use the clustered index.

  mysql-test/r/innodb.result@1.203, 2007-11-07 19:59:56+04:00, ramil@mysql.com +15 -15
    Fix for bug #26447: "ALTER TABLE .. ORDER" does not work with InnoDB
    and auto_increment keys
      - results adjusted.
parent 642df820
...@@ -925,7 +925,7 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -925,7 +925,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL b 4 NULL # Using index 1 SIMPLE t1 index NULL b 4 NULL # Using index
explain select a,b from t1; explain select a,b from t1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL b 4 NULL # Using index 1 SIMPLE t1 index NULL PRIMARY 4 NULL #
explain select a,b,c from t1; explain select a,b,c from t1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL # 1 SIMPLE t1 ALL NULL NULL NULL NULL #
...@@ -1153,14 +1153,14 @@ UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000; ...@@ -1153,14 +1153,14 @@ UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
SELECT * from t1; SELECT * from t1;
a b a b
1 1 1 1
102 2
103 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
102 2
103 3
drop table t1; drop table t1;
CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb; CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb;
CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb; CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb;
...@@ -1184,7 +1184,6 @@ a b ...@@ -1184,7 +1184,6 @@ a b
update t1,t2 set t1.a=t1.a+100 where t1.a=101; update t1,t2 set t1.a=t1.a+100 where t1.a=101;
select * from t1; select * from t1;
a b a b
201 1
102 2 102 2
103 3 103 3
104 4 104 4
...@@ -1196,10 +1195,11 @@ a b ...@@ -1196,10 +1195,11 @@ a b
110 10 110 10
111 11 111 11
112 12 112 12
201 1
update t1,t2 set t1.b=t1.b+10 where t1.b=2; update t1,t2 set t1.b=t1.b+10 where t1.b=2;
select * from t1; select * from t1;
a b a b
201 1 102 12
103 3 103 3
104 4 104 4
105 5 105 5
...@@ -1209,34 +1209,34 @@ a b ...@@ -1209,34 +1209,34 @@ a b
109 9 109 9
110 10 110 10
111 11 111 11
102 12
112 12 112 12
201 1
update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100; update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100;
select * from t1; select * from t1;
a b a b
201 1 102 12
103 5 103 5
104 6 104 6
106 6
105 7 105 7
106 6
107 7 107 7
108 8 108 8
109 9 109 9
110 10 110 10
111 11 111 11
102 12
112 12 112 12
201 1
select * from t2; select * from t2;
a b a b
1 1 1 1
2 2 2 2
3 13
4 14
5 15
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
3 13
4 14
5 15
drop table t1,t2; drop table t1,t2;
CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM; CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
...@@ -1287,11 +1287,11 @@ insert into t1 (id) values (null),(null),(null),(null),(null); ...@@ -1287,11 +1287,11 @@ insert into t1 (id) values (null),(null),(null),(null),(null);
update t1 set fk=69 where fk is null order by id limit 1; update t1 set fk=69 where fk is null order by id limit 1;
SELECT * from t1; SELECT * from t1;
id fk id fk
1 69
2 NULL 2 NULL
3 NULL 3 NULL
4 NULL 4 NULL
5 NULL 5 NULL
1 69
drop table t1; drop table t1;
create table t1 (a int not null, b int not null, key (a)); create table t1 (a int not null, b int not null, key (a));
insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3); insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
...@@ -2420,8 +2420,8 @@ insert into t1 (b) values (1); ...@@ -2420,8 +2420,8 @@ insert into t1 (b) values (1);
replace into t1 (b) values (2), (1), (3); replace into t1 (b) values (2), (1), (3);
select * from t1; select * from t1;
a b a b
3 1
2 2 2 2
3 1
4 3 4 3
truncate table t1; truncate table t1;
insert into t1 (b) values (1); insert into t1 (b) values (1);
...@@ -2430,8 +2430,8 @@ replace into t1 (b) values (1); ...@@ -2430,8 +2430,8 @@ replace into t1 (b) values (1);
replace into t1 (b) values (3); replace into t1 (b) values (3);
select * from t1; select * from t1;
a b a b
3 1
2 2 2 2
3 1
4 3 4 3
drop table t1; drop table t1;
create table t1 (rowid int not null auto_increment, val int not null,primary create table t1 (rowid int not null auto_increment, val int not null,primary
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment