From 6cff8461230661489bca2c07c1410c28a4ab262b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 16 Nov 2000 13:08:20 +0100 Subject: [PATCH] item_func.cc bugfix - two fulltext indices were not working sometimes sql/item_func.cc: bugfix - two fulltext indices were not working sometimes --- sql/item_func.cc | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/sql/item_func.cc b/sql/item_func.cc index 47bc089b3e0..3d002e5c9d9 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1975,31 +1975,42 @@ bool Item_func_match::fix_index() } } - uint max_cnt=0, max_key=0; + uint max_cnt=0, mkeys=0; for (key=0 ; 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 now, partial keys won't work. SerG - - if (max_cnt < fields.elements || - max_cnt < table->key_info[max_key].key_parts) + for (key=0 ; key<=mkeys ; key++) { - my_printf_error(ER_FT_MATCHING_KEY_NOT_FOUND, - ER(ER_FT_MATCHING_KEY_NOT_FOUND),MYF(0)); - return 1; + // for now, partial keys won't work. SerG + if (max_cnt < fields.elements || + max_cnt < table->key_info[ft_to_key[key]].key_parts) + continue; + + this->key=ft_to_key[key]; + maybe_null=1; + join_key=0; + + return 0; } - this->key=max_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