Commit 2ccb35c3 authored by unknown's avatar unknown

fulltext+const_table bug fixed


mysql-test/r/fulltext.result:
  test added
mysql-test/t/fulltext.test:
  test added
sql/item_func.cc:
  fulltext+const_table problem fixed once and forever
sql/item_func.h:
  fulltext+const_table problem fixed once and forever
sql/sql_select.cc:
  fulltext+const_table problem fixed once and forever
sql/table.h:
  fulltext+const_table problem fixed once and forever
parent 7f6e7687
...@@ -150,3 +150,9 @@ select * from t1; ...@@ -150,3 +150,9 @@ select * from t1;
id title id title
1 this test once revealed a bug 1 this test once revealed a bug
update t1 set title=NULL where id=1; update t1 set title=NULL where id=1;
drop table t1;
CREATE TABLE t1 (a int(11), b text, FULLTEXT KEY (b)) TYPE=MyISAM;
insert into t1 values (1,"I wonder why the fulltext index doesnt work?");
SELECT * from t1 where MATCH (b) AGAINST ('apples');
a b
drop table t1;
...@@ -129,3 +129,13 @@ check table t1; ...@@ -129,3 +129,13 @@ check table t1;
update t1 set title='this test once revealed a bug' where id=1; update t1 set title='this test once revealed a bug' where id=1;
select * from t1; select * from t1;
update t1 set title=NULL where id=1; update t1 set title=NULL where id=1;
drop table t1;
# one more bug - const_table related
CREATE TABLE t1 (a int(11), b text, FULLTEXT KEY (b)) TYPE=MyISAM;
insert into t1 values (1,"I wonder why the fulltext index doesnt work?");
SELECT * from t1 where MATCH (b) AGAINST ('apples');
drop table t1;
...@@ -2108,6 +2108,7 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist) ...@@ -2108,6 +2108,7 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist)
key=NO_SUCH_KEY; key=NO_SUCH_KEY;
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;
record=table->record[0]; record=table->record[0];
if (key == NO_SUCH_KEY && mode != FT_BOOL) if (key == NO_SUCH_KEY && mode != FT_BOOL)
{ {
......
...@@ -930,6 +930,7 @@ class Item_func_match :public Item_real_func ...@@ -930,6 +930,7 @@ class Item_func_match :public Item_real_func
ft_handler=0; ft_handler=0;
if(join_key) if(join_key)
table->file->ft_handler=0; table->file->ft_handler=0;
table->fulltext_searched=0;
} }
if (concat) delete concat; if (concat) delete concat;
} }
......
...@@ -982,7 +982,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds, ...@@ -982,7 +982,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)
{ {
set_position(join,const_count++,s,(KEYUSE*) 0); set_position(join,const_count++,s,(KEYUSE*) 0);
} }
......
...@@ -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;
my_bool no_keyread; my_bool no_keyread;
......
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