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 | 69c9bfd3e3d5de7bea49e8c4d4206bdea6edb37f (patch) | |
tree | af6c5f4115c006872fcac3e50d84bdb8b03f7aa9 | |
parent | a674f1fc9331f6a0647f73e0ad6d32a14cff2278 (diff) | |
download | mariadb-git-69c9bfd3e3d5de7bea49e8c4d4206bdea6edb37f.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
-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, |