diff options
author | Sergei Golubchik <sergii@pisem.net> | 2013-04-12 01:01:18 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2013-04-12 01:01:18 +0200 |
commit | ce926c90accc6ca36c62f0b954e651d89db66da8 (patch) | |
tree | 737c9571a90e6e1f07be30d8bdc64c2f06d6fbf3 /sql/item_func.cc | |
parent | 5ae72bb73cceafe5062be3827dbe3b4f488a7a73 (diff) | |
parent | ea4a417a8d456e8e09b6b4306f22c7c20b3e594c (diff) | |
download | mariadb-git-ce926c90accc6ca36c62f0b954e651d89db66da8.tar.gz |
5.3 merge
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r-- | sql/item_func.cc | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index 84161021a2b..62f8990aa8c 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -5990,15 +5990,12 @@ void Item_func_match::init_search(bool no_order) { DBUG_ENTER("Item_func_match::init_search"); + if (!table->file->get_table()) // the handler isn't opened yet + DBUG_VOID_RETURN; + /* Check if init_search() has been called before */ if (ft_handler) { - /* - We should reset ft_handler as it is cleaned up - on destruction of FT_SELECT object - (necessary in case of re-execution of subquery). - TODO: FT_SELECT should not clean up ft_handler. - */ if (join_key) table->file->ft_handler= ft_handler; DBUG_VOID_RETURN; @@ -6007,10 +6004,10 @@ void Item_func_match::init_search(bool no_order) if (key == NO_SUCH_KEY) { List<Item> fields; - fields.push_back(new Item_string(" ",1, cmp_collation.collation)); - for (uint i=1; i < arg_count; i++) + fields.push_back(new Item_string(" ", 1, cmp_collation.collation)); + for (uint i= 1; i < arg_count; i++) fields.push_back(args[i]); - concat_ws=new Item_func_concat_ws(fields); + concat_ws= new Item_func_concat_ws(fields); /* Above function used only to get value and do not need fix_fields for it: Item_string - basic constant @@ -6022,10 +6019,10 @@ void Item_func_match::init_search(bool no_order) if (master) { - join_key=master->join_key=join_key|master->join_key; + join_key= master->join_key= join_key | master->join_key; master->init_search(no_order); - ft_handler=master->ft_handler; - join_key=master->join_key; + ft_handler= master->ft_handler; + join_key= master->join_key; DBUG_VOID_RETURN; } @@ -6035,7 +6032,7 @@ void Item_func_match::init_search(bool no_order) if (!(ft_tmp=key_item()->val_str(&value))) { ft_tmp= &value; - value.set("",0,cmp_collation.collation); + value.set("", 0, cmp_collation.collation); } if (ft_tmp->charset() != cmp_collation.collation) @@ -6048,7 +6045,11 @@ void Item_func_match::init_search(bool no_order) if (join_key && !no_order) flags|=FT_SORTED; - ft_handler=table->file->ft_init_ext(flags, key, ft_tmp); + + if (key != NO_SUCH_KEY) + thd_proc_info(table->in_use, "FULLTEXT initialization"); + + ft_handler= table->file->ft_init_ext(flags, key, ft_tmp); if (join_key) table->file->ft_handler=ft_handler; |