Commit f4fb48ba authored by unknown's avatar unknown

Bug#9719: DELETE with WHERE on HEAP table just deletes first row of matched

set.

(Ramil's patch, recreated.)


heap/hp_delete.c:
  Reset info->lastkey_len for further heap_rnext/heap_rprev calls.
mysql-test/r/heap_btree.result:
  Test for bug #9719: DELETE with WHERE on HEAP table just deletes first 
  row of matched set.
mysql-test/t/heap_btree.test:
  Test for bug #9719: DELETE with WHERE on HEAP table just deletes first 
  row of matched set.
parent 98daac18
...@@ -73,7 +73,10 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo, ...@@ -73,7 +73,10 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo,
int res; int res;
if (flag) if (flag)
{
info->last_pos= NULL; /* For heap_rnext/heap_rprev */ info->last_pos= NULL; /* For heap_rnext/heap_rprev */
info->lastkey_len= 0;
}
custom_arg.keyseg= keyinfo->seg; custom_arg.keyseg= keyinfo->seg;
custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos); custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos);
......
...@@ -246,3 +246,38 @@ DELETE from t1 where a < 100; ...@@ -246,3 +246,38 @@ DELETE from t1 where a < 100;
SELECT * from t1; SELECT * from t1;
a a
DROP TABLE t1; DROP TABLE t1;
create table t1(a int not null, key using btree(a)) engine=heap;
insert into t1 values (2), (2), (2), (1), (1), (3), (3), (3), (3);
select a from t1 where a > 2;
a
3
3
3
3
delete from t1 where a < 4;
select a from t1;
a
insert into t1 values (2), (2), (2), (1), (1), (3), (3), (3), (3);
select a from t1 where a > 4;
a
delete from t1 where a > 4;
select a from t1;
a
3
3
1
3
3
1
2
2
2
select a from t1 where a > 3;
a
delete from t1 where a >= 2;
select a from t1;
a
1
1
drop table t1;
End of 4.1 tests
...@@ -164,4 +164,22 @@ DELETE from t1 where a < 100; ...@@ -164,4 +164,22 @@ DELETE from t1 where a < 100;
SELECT * from t1; SELECT * from t1;
DROP TABLE t1; DROP TABLE t1;
# End of 4.1 tests #
# Bug #9719: problem with delete
#
create table t1(a int not null, key using btree(a)) engine=heap;
insert into t1 values (2), (2), (2), (1), (1), (3), (3), (3), (3);
select a from t1 where a > 2;
delete from t1 where a < 4;
select a from t1;
insert into t1 values (2), (2), (2), (1), (1), (3), (3), (3), (3);
select a from t1 where a > 4;
delete from t1 where a > 4;
select a from t1;
select a from t1 where a > 3;
delete from t1 where a >= 2;
select a from t1;
drop table t1;
--echo End of 4.1 tests
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