diff options
author | unknown <serg@serg.mylan> | 2004-11-11 21:26:24 +0100 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2004-11-11 21:26:24 +0100 |
commit | 9ae3dde8b5796bdcd6f8c6c2add8ded3a489f14e (patch) | |
tree | af6c5f4115c006872fcac3e50d84bdb8b03f7aa9 /myisam | |
parent | 946f042dd330ebec085cb1e24fdc4ab16bc33c1c (diff) | |
download | mariadb-git-9ae3dde8b5796bdcd6f8c6c2add8ded3a489f14e.tar.gz |
mi_write: fix for ft2 when found word (in the tree) has different length as the word to insert
myisam/mi_check.c:
one more correctness check for CHECK of fulltext indexes
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/mi_check.c | 8 | ||||
-rw-r--r-- | myisam/mi_write.c | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c index 1df518a2712..bf684270c0a 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -656,6 +656,14 @@ static int chk_index(MI_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo, if (chk_index_down(param,info,&info->s->ft2_keyinfo,record, temp_buff,&tmp_keys,key_checksum,1)) goto err; + if (tmp_keys + subkeys) + { + mi_check_print_error(param,"Number of words in the 2nd level tree " + "does not match the number in the header. " + "Parent word in on the page %s, offset %d", + llstr(page,llbuff), old_keypos-buff); + goto err; + } (*keys)+=tmp_keys-1; continue; } diff --git a/myisam/mi_write.c b/myisam/mi_write.c index dc596672a84..e059bbb569f 100644 --- a/myisam/mi_write.c +++ b/myisam/mi_write.c @@ -372,6 +372,7 @@ static int w_search(register MI_INFO *info, register MI_KEYDEF *keyinfo, /* popular word. two-level tree. going down */ my_off_t root=info->dupp_key_pos; keyinfo=&info->s->ft2_keyinfo; + get_key_full_length_rdonly(off, key); key+=off; keypos-=keyinfo->keylength+nod_flag; /* we'll modify key entry 'in vivo' */ error=_mi_ck_real_write_btree(info, keyinfo, key, 0, |