From 3e335144be1af3f7c70a0c385b4e88da2c1e5e94 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 11 Apr 2003 20:09:24 +0300 Subject: [PATCH] Two bug fixes mysql-test/r/innodb.result: Fix for a bug that caused queries with ORDER BY field_in_select_list to be returned entirely unsorted. mysql-test/t/innodb.test: Fix for a bug that caused queries with ORDER BY field_in_select_list to be returned entirely unsorted. sql/sql_select.cc: Fix for a bug that caused queries with ORDER BY field_in_select_list to be returned entirely unsorted. sql/sql_update.cc: Fix for a glitch that caused too many tables to be locked. --- mysql-test/r/innodb.result | 10 ++++++++++ mysql-test/t/innodb.test | 5 +++++ sql/sql_select.cc | 2 ++ sql/sql_update.cc | 7 +++++++ 4 files changed, 24 insertions(+) diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index b12466983f8..96bc66222d3 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -1207,6 +1207,16 @@ SET AUTOCOMMIT=0; INSERT INTO t1 ( B_ID ) VALUES ( 1 ); INSERT INTO t2 ( NEXT_T ) VALUES ( 1 ); ROLLBACK; +Warning: Some non-transactional changed tables couldn't be rolled back SELECT * FROM t1; B_ID drop table t1,t2; +create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) type = innodb; +insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2); +select distinct parent,child from t1 order by parent; +parent child +0 4 +1 2 +1 3 +2 1 +drop table t1; diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test index 9d614e8d163..b8929d5c4de 100644 --- a/mysql-test/t/innodb.test +++ b/mysql-test/t/innodb.test @@ -802,6 +802,11 @@ CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) TYPE=InnoDB; SET AUTOCOMMIT=0; INSERT INTO t1 ( B_ID ) VALUES ( 1 ); INSERT INTO t2 ( NEXT_T ) VALUES ( 1 ); +-- error 1196 ROLLBACK; SELECT * FROM t1; drop table t1,t2; +create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) type = innodb; +insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2); +select distinct parent,child from t1 order by parent; +drop table t1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 96de43ae55c..dfcbc5418cd 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -555,6 +555,8 @@ mysql_select(THD *thd,TABLE_LIST *tables,List &fields,COND *conds, /* Change DISTINCT to GROUP BY */ select_distinct= 0; no_order= !order; + if (order && skip_sort_order) + join.tmp_table_param.quick_group=0; if (all_order_fields_used) order=0; join.group=1; // For end_write_group diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 59c766e7a9f..de370ab92b5 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -478,7 +478,14 @@ int multi_update::prepare(List ¬_used_values) table->used_keys=0; table->pos_in_table_list= tl; } + else + { + table_ref->lock_type=TL_READ; + mysql_unlock_some_tables(thd,&table,1); + } } + + table_count= update.elements; update_tables= (TABLE_LIST*) update.first;