Commit 8d8a133d authored by serg@serg.mysql.com's avatar serg@serg.mysql.com
Browse files

fts+const_tables bug fixed

parent adf4f462
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2056,6 +2056,7 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist)
  }
  const_item_cache=0;
  table=((Item_field *)fields.head())->field->table;
  table->fulltext_searched=1;
  return 0;
}

+1 −0
Original line number Diff line number Diff line
@@ -880,6 +880,7 @@ class Item_func_match :public Item_real_func
	ft_close_search(ft_handler);
        if(join_key)
          table->file->ft_handler=0;
        table->fulltext_searched=0;
      }
    }
  }
+4 −2
Original line number Diff line number Diff line
@@ -885,7 +885,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
      s->dependent=(table_map) 0;
    s->key_dependent=(table_map) 0;
    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;
      const_table_map|=table->map;
@@ -983,7 +984,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
	  } while (keyuse->table == table && keyuse->key == key);

	  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)
	    {					// Found everything for ref.
+1 −0
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ struct st_table {
  my_bool db_low_byte_first;		/* Portable row format */
  my_bool locked_by_flush;
  my_bool locked_by_name;
  my_bool fulltext_searched;
  my_bool crashed;
  my_bool is_view;
  Field *next_number_field,		/* Set if next_number is activated */