Bug#9719: DELETE with WHERE on HEAP table just deletes first row of matched
set. (Ramil's patch, recreated.)
This commit is contained in:
parent
757493d4ec
commit
c9f64f71c8
@ -73,7 +73,10 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo,
|
||||
int res;
|
||||
|
||||
if (flag)
|
||||
{
|
||||
info->last_pos= NULL; /* For heap_rnext/heap_rprev */
|
||||
info->lastkey_len= 0;
|
||||
}
|
||||
|
||||
custom_arg.keyseg= keyinfo->seg;
|
||||
custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos);
|
||||
|
@ -246,3 +246,38 @@ DELETE from t1 where a < 100;
|
||||
SELECT * from t1;
|
||||
a
|
||||
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;
|
||||
SELECT * from 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
|
||||
|
Loading…
x
Reference in New Issue
Block a user