mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
LOCK+change+OPTIMIZE MyISAM bug
myisam/mi_delete_all.c: reverting the wrong bugfix mysql-test/r/delete.result: moving the test case to where it belongs mysql-test/t/delete.test: moving the test case to where it belongs
This commit is contained in:
@ -35,11 +35,11 @@ int mi_delete_all_rows(MI_INFO *info)
|
|||||||
if (_mi_mark_file_changed(info))
|
if (_mi_mark_file_changed(info))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
state->state.records=info->state->records=info->state->del=state->split=0;
|
info->state->records=info->state->del=state->split=0;
|
||||||
state->dellink = HA_OFFSET_ERROR;
|
state->dellink = HA_OFFSET_ERROR;
|
||||||
state->sortkey= (ushort) ~0;
|
state->sortkey= (ushort) ~0;
|
||||||
info->state->key_file_length=share->base.keystart;
|
info->state->key_file_length=share->base.keystart;
|
||||||
state->state.data_file_length=info->state->data_file_length=0;
|
info->state->data_file_length=0;
|
||||||
info->state->empty=info->state->key_empty=0;
|
info->state->empty=info->state->key_empty=0;
|
||||||
state->checksum=0;
|
state->checksum=0;
|
||||||
|
|
||||||
|
@ -24,16 +24,3 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
|
|||||||
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||||
delete from t1 where a=27;
|
delete from t1 where a=27;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (a INT);
|
|
||||||
INSERT INTO t1 VALUES (1), (2), (3);
|
|
||||||
LOCK TABLES t1 WRITE;
|
|
||||||
DELETE FROM t1;
|
|
||||||
OPTIMIZE TABLE t1;
|
|
||||||
Table Op Msg_type Msg_text
|
|
||||||
test.t1 optimize status OK
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a
|
|
||||||
CHECK TABLE t1;
|
|
||||||
Table Op Msg_type Msg_text
|
|
||||||
test.t1 check status OK
|
|
||||||
drop table if exists t1;
|
|
||||||
|
@ -100,3 +100,11 @@ CHECK TABLE t1;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
LOCK TABLES t1 WRITE;
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 optimize status OK
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -35,11 +35,3 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
|
|||||||
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||||
delete from t1 where a=27;
|
delete from t1 where a=27;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (a INT);
|
|
||||||
INSERT INTO t1 VALUES (1), (2), (3);
|
|
||||||
LOCK TABLES t1 WRITE;
|
|
||||||
DELETE FROM t1;
|
|
||||||
OPTIMIZE TABLE t1;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
CHECK TABLE t1;
|
|
||||||
drop table if exists t1;
|
|
||||||
|
@ -93,3 +93,14 @@ INSERT INTO t1 (post_text) VALUES ('ceci est un test'),('ceci est un test'),('ce
|
|||||||
REPAIR TABLE t1;
|
REPAIR TABLE t1;
|
||||||
CHECK TABLE t1;
|
CHECK TABLE t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test of OPTIMIZE of locked and modified tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
LOCK TABLES t1 WRITE;
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@ -566,6 +566,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!optimize ||
|
if (!optimize ||
|
||||||
|
memcmp(file->state, & share->state.state, sizeof(MI_STATUS_INFO)) ||
|
||||||
((file->state->del || share->state.split != file->state->records) &&
|
((file->state->del || share->state.split != file->state->records) &&
|
||||||
(!(param.testflag & T_QUICK) ||
|
(!(param.testflag & T_QUICK) ||
|
||||||
!(share->state.changed & STATE_NOT_OPTIMIZED_KEYS))))
|
!(share->state.changed & STATE_NOT_OPTIMIZED_KEYS))))
|
||||||
|
Reference in New Issue
Block a user