MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with disabled
keys Fixed that OPTIMIZE TABLE against MyISAM/Aria table may write uninitialized key root position for disabled keys.
This commit is contained in:
parent
3a50a8c9be
commit
80f6b22593
@ -2522,6 +2522,17 @@ test.t1 check error Size of indexfile is: 1024 Should be: 2048
|
|||||||
test.t1 check warning Size of datafile is: 14 Should be: 7
|
test.t1 check warning Size of datafile is: 14 Should be: 7
|
||||||
test.t1 check error Corrupt
|
test.t1 check error Corrupt
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||||
|
# disabled keys
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 optimize status OK
|
||||||
|
DROP TABLE t1;
|
||||||
show variables like 'myisam_block_size';
|
show variables like 'myisam_block_size';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
myisam_block_size 1024
|
myisam_block_size 1024
|
||||||
|
@ -6,3 +6,14 @@ OPTIMIZE TABLE t1;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 optimize status OK
|
test.t1 optimize status OK
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||||
|
# disabled keys
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=Aria;
|
||||||
|
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 optimize status OK
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -160,3 +160,13 @@ INSERT /*! IGNORE */ INTO t1 VALUES ('urxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoz
|
|||||||
check table t1;
|
check table t1;
|
||||||
OPTIMIZE TABLE t1;
|
OPTIMIZE TABLE t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||||
|
--echo # disabled keys
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=Aria;
|
||||||
|
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1749,6 +1749,16 @@ CHECK TABLE t1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with
|
||||||
|
--echo # disabled keys
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (4),(3),(1),(0);
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check some variables
|
# Check some variables
|
||||||
#
|
#
|
||||||
|
@ -3119,10 +3119,8 @@ int maria_sort_index(HA_CHECK *param, register MARIA_HA *info, char *name)
|
|||||||
for (key= 0,keyinfo= &share->keyinfo[0]; key < share->base.keys ;
|
for (key= 0,keyinfo= &share->keyinfo[0]; key < share->base.keys ;
|
||||||
key++,keyinfo++)
|
key++,keyinfo++)
|
||||||
{
|
{
|
||||||
if (! maria_is_key_active(share->state.key_map, key))
|
if (maria_is_key_active(share->state.key_map, key) &&
|
||||||
continue;
|
share->state.key_root[key] != HA_OFFSET_ERROR)
|
||||||
|
|
||||||
if (share->state.key_root[key] != HA_OFFSET_ERROR)
|
|
||||||
{
|
{
|
||||||
index_pos[key]=param->new_file_pos; /* Write first block here */
|
index_pos[key]=param->new_file_pos; /* Write first block here */
|
||||||
if (sort_one_index(param,info,keyinfo,share->state.key_root[key],
|
if (sort_one_index(param,info,keyinfo,share->state.key_root[key],
|
||||||
|
@ -1944,10 +1944,8 @@ int mi_sort_index(HA_CHECK *param, register MI_INFO *info, char * name)
|
|||||||
for (key= 0,keyinfo= &share->keyinfo[0]; key < share->base.keys ;
|
for (key= 0,keyinfo= &share->keyinfo[0]; key < share->base.keys ;
|
||||||
key++,keyinfo++)
|
key++,keyinfo++)
|
||||||
{
|
{
|
||||||
if (! mi_is_key_active(info->s->state.key_map, key))
|
if (mi_is_key_active(info->s->state.key_map, key) &&
|
||||||
continue;
|
share->state.key_root[key] != HA_OFFSET_ERROR)
|
||||||
|
|
||||||
if (share->state.key_root[key] != HA_OFFSET_ERROR)
|
|
||||||
{
|
{
|
||||||
index_pos[key]=param->new_file_pos; /* Write first block here */
|
index_pos[key]=param->new_file_pos; /* Write first block here */
|
||||||
if (sort_one_index(param,info,keyinfo,share->state.key_root[key],
|
if (sort_one_index(param,info,keyinfo,share->state.key_root[key],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user