Loading BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line monty@donna.mysql.com sasha@mysql.sashanet.com serg@serg.mysql.com sql/item_func.cc +26 −15 Original line number Diff line number Diff line Loading @@ -1975,33 +1975,44 @@ bool Item_func_match::fix_index() } } uint max_cnt=0, max_key=0; uint max_cnt=0, mkeys=0; for (key=0 ; key<fts ; key++) { if (ft_cnt[key] > max_cnt) { max_cnt=ft_cnt[key]; max_key=ft_to_key[key]; mkeys=0; max_cnt=ft_cnt[mkeys]=ft_cnt[key]; ft_to_key[mkeys]=ft_to_key[key]; continue; } if (ft_cnt[key] == max_cnt) { mkeys++; ft_cnt[mkeys]=ft_cnt[key]; ft_to_key[mkeys]=ft_to_key[key]; continue; } } for (key=0 ; key<=mkeys ; key++) { // for now, partial keys won't work. SerG if (max_cnt < fields.elements || max_cnt < table->key_info[max_key].key_parts) { my_printf_error(ER_FT_MATCHING_KEY_NOT_FOUND, ER(ER_FT_MATCHING_KEY_NOT_FOUND),MYF(0)); return 1; } max_cnt < table->key_info[ft_to_key[key]].key_parts) continue; this->key=max_key; this->key=ft_to_key[key]; maybe_null=1; join_key=0; return 0; } my_printf_error(ER_FT_MATCHING_KEY_NOT_FOUND, ER(ER_FT_MATCHING_KEY_NOT_FOUND),MYF(0)); return 1; } bool Item_func_match::eq(const Item *item) const { if (item->type() != FUNC_ITEM) Loading Loading
BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line monty@donna.mysql.com sasha@mysql.sashanet.com serg@serg.mysql.com
sql/item_func.cc +26 −15 Original line number Diff line number Diff line Loading @@ -1975,33 +1975,44 @@ bool Item_func_match::fix_index() } } uint max_cnt=0, max_key=0; uint max_cnt=0, mkeys=0; for (key=0 ; key<fts ; key++) { if (ft_cnt[key] > max_cnt) { max_cnt=ft_cnt[key]; max_key=ft_to_key[key]; mkeys=0; max_cnt=ft_cnt[mkeys]=ft_cnt[key]; ft_to_key[mkeys]=ft_to_key[key]; continue; } if (ft_cnt[key] == max_cnt) { mkeys++; ft_cnt[mkeys]=ft_cnt[key]; ft_to_key[mkeys]=ft_to_key[key]; continue; } } for (key=0 ; key<=mkeys ; key++) { // for now, partial keys won't work. SerG if (max_cnt < fields.elements || max_cnt < table->key_info[max_key].key_parts) { my_printf_error(ER_FT_MATCHING_KEY_NOT_FOUND, ER(ER_FT_MATCHING_KEY_NOT_FOUND),MYF(0)); return 1; } max_cnt < table->key_info[ft_to_key[key]].key_parts) continue; this->key=max_key; this->key=ft_to_key[key]; maybe_null=1; join_key=0; return 0; } my_printf_error(ER_FT_MATCHING_KEY_NOT_FOUND, ER(ER_FT_MATCHING_KEY_NOT_FOUND),MYF(0)); return 1; } bool Item_func_match::eq(const Item *item) const { if (item->type() != FUNC_ITEM) Loading