Loading mysql-test/r/delete.result +7 −0 Original line number Diff line number Diff line Loading @@ -186,4 +186,11 @@ select count(*) from t1; count(*) 0 drop table t1; create table t1(f1 int primary key); insert into t1 values (4),(3),(1),(2); delete from t1 where (@a:= f1) order by f1 limit 1; select @a; @a 1 drop table t1; End of 4.1 tests mysql-test/t/delete.test +10 −0 Original line number Diff line number Diff line Loading @@ -174,4 +174,14 @@ delete from t1 where a is null; select count(*) from t1; drop table t1; # # Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and # non-restricting WHERE is present. # create table t1(f1 int primary key); insert into t1 values (4),(3),(1),(2); delete from t1 where (@a:= f1) order by f1 limit 1; select @a; drop table t1; --echo End of 4.1 tests sql/sql_delete.cc +1 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, DBUG_RETURN(-1); // This will force out message } if (!select && limit != HA_POS_ERROR) if ((!select || table->quick_keys.is_clear_all()) && limit != HA_POS_ERROR) usable_index= get_index_for_order(table, (ORDER*)(order->first), limit); if (usable_index == MAX_KEY) Loading Loading
mysql-test/r/delete.result +7 −0 Original line number Diff line number Diff line Loading @@ -186,4 +186,11 @@ select count(*) from t1; count(*) 0 drop table t1; create table t1(f1 int primary key); insert into t1 values (4),(3),(1),(2); delete from t1 where (@a:= f1) order by f1 limit 1; select @a; @a 1 drop table t1; End of 4.1 tests
mysql-test/t/delete.test +10 −0 Original line number Diff line number Diff line Loading @@ -174,4 +174,14 @@ delete from t1 where a is null; select count(*) from t1; drop table t1; # # Bug#17711: DELETE doesn't use index when ORDER BY, LIMIT and # non-restricting WHERE is present. # create table t1(f1 int primary key); insert into t1 values (4),(3),(1),(2); delete from t1 where (@a:= f1) order by f1 limit 1; select @a; drop table t1; --echo End of 4.1 tests
sql/sql_delete.cc +1 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, DBUG_RETURN(-1); // This will force out message } if (!select && limit != HA_POS_ERROR) if ((!select || table->quick_keys.is_clear_all()) && limit != HA_POS_ERROR) usable_index= get_index_for_order(table, (ORDER*)(order->first), limit); if (usable_index == MAX_KEY) Loading