summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-04-12 01:01:18 +0200
committerSergei Golubchik <sergii@pisem.net>2013-04-12 01:01:18 +0200
commitce926c90accc6ca36c62f0b954e651d89db66da8 (patch)
tree737c9571a90e6e1f07be30d8bdc64c2f06d6fbf3 /sql/item_func.cc
parent5ae72bb73cceafe5062be3827dbe3b4f488a7a73 (diff)
parentea4a417a8d456e8e09b6b4306f22c7c20b3e594c (diff)
downloadmariadb-git-ce926c90accc6ca36c62f0b954e651d89db66da8.tar.gz
5.3 merge
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r--sql/item_func.cc29
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;