summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-11-11 21:26:24 +0100
committerunknown <serg@serg.mylan>2004-11-11 21:26:24 +0100
commit69c9bfd3e3d5de7bea49e8c4d4206bdea6edb37f (patch)
treeaf6c5f4115c006872fcac3e50d84bdb8b03f7aa9
parenta674f1fc9331f6a0647f73e0ad6d32a14cff2278 (diff)
downloadmariadb-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.c8
-rw-r--r--myisam/mi_write.c1
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,