diff options
Diffstat (limited to 'myisam/ft_nlq_search.c')
-rw-r--r-- | myisam/ft_nlq_search.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/myisam/ft_nlq_search.c b/myisam/ft_nlq_search.c index ac9fa5a9a8c..42f7d7fc8cf 100644 --- a/myisam/ft_nlq_search.c +++ b/myisam/ft_nlq_search.c @@ -37,6 +37,7 @@ struct st_ft_info { typedef struct st_all_in_one { MI_INFO *info; uint keynr; + CHARSET_INFO *charset; uchar *keybuff; MI_KEYDEF *keyinfo; my_off_t key_root; @@ -93,7 +94,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio) while(!r) { - if (_mi_compare_text(default_charset_info, + if (_mi_compare_text(aio->charset, aio->info->lastkey,keylen, aio->keybuff,keylen,0)) break; @@ -184,8 +185,9 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, byte *query, aio.info=info; aio.keynr=keynr; - aio.keybuff=info->lastkey+info->s->base.max_key_length; aio.keyinfo=info->s->keyinfo+keynr; + aio.charset=aio.keyinfo->seg->charset; + aio.keybuff=info->lastkey+info->s->base.max_key_length; aio.key_root=info->s->state.key_root[keynr]; bzero(&allocated_wtree,sizeof(allocated_wtree)); @@ -193,6 +195,7 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, byte *query, init_tree(&aio.dtree,0,0,sizeof(FT_SUPERDOC),(qsort_cmp2)&FT_SUPERDOC_cmp,0, NULL, NULL); + ft_parse_init(&allocated_wtree, aio.charset); if(ft_parse(&allocated_wtree,query,query_len)) goto err; |