Commit e872596b authored by unknown's avatar unknown

fts+const_tables bug fixed

parent 182204ba
...@@ -2056,6 +2056,7 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist) ...@@ -2056,6 +2056,7 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist)
} }
const_item_cache=0; const_item_cache=0;
table=((Item_field *)fields.head())->field->table; table=((Item_field *)fields.head())->field->table;
table->fulltext_searched=1;
return 0; return 0;
} }
......
...@@ -880,6 +880,7 @@ class Item_func_match :public Item_real_func ...@@ -880,6 +880,7 @@ class Item_func_match :public Item_real_func
ft_close_search(ft_handler); ft_close_search(ft_handler);
if(join_key) if(join_key)
table->file->ft_handler=0; table->file->ft_handler=0;
table->fulltext_searched=0;
} }
} }
} }
......
...@@ -885,7 +885,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds, ...@@ -885,7 +885,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
s->dependent=(table_map) 0; s->dependent=(table_map) 0;
s->key_dependent=(table_map) 0; s->key_dependent=(table_map) 0;
if ((table->system || table->file->records <= 1) && ! s->dependent && if ((table->system || table->file->records <= 1) && ! s->dependent &&
!(table->file->option_flag() & HA_NOT_EXACT_COUNT)) !(table->file->option_flag() & HA_NOT_EXACT_COUNT) &&
!table->fulltext_searched)
{ {
s->type=JT_SYSTEM; s->type=JT_SYSTEM;
const_table_map|=table->map; const_table_map|=table->map;
...@@ -983,7 +984,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds, ...@@ -983,7 +984,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
} while (keyuse->table == table && keyuse->key == key); } while (keyuse->table == table && keyuse->key == key);
if (eq_part == PREV_BITS(uint,table->key_info[key].key_parts) && if (eq_part == PREV_BITS(uint,table->key_info[key].key_parts) &&
(table->key_info[key].flags & HA_NOSAME)) (table->key_info[key].flags & HA_NOSAME) &&
!table->fulltext_searched)
{ {
if (const_ref == eq_part) if (const_ref == eq_part)
{ // Found everything for ref. { // Found everything for ref.
......
...@@ -95,6 +95,7 @@ struct st_table { ...@@ -95,6 +95,7 @@ struct st_table {
my_bool db_low_byte_first; /* Portable row format */ my_bool db_low_byte_first; /* Portable row format */
my_bool locked_by_flush; my_bool locked_by_flush;
my_bool locked_by_name; my_bool locked_by_name;
my_bool fulltext_searched;
my_bool crashed; my_bool crashed;
my_bool is_view; my_bool is_view;
Field *next_number_field, /* Set if next_number is activated */ Field *next_number_field, /* Set if next_number is activated */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment