summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorSergey Glukhov <Sergey.Glukhov@sun.com>2010-10-18 14:47:26 +0400
committerSergey Glukhov <Sergey.Glukhov@sun.com>2010-10-18 14:47:26 +0400
commit127c721cef2c1b248af79a386c174a5e7addd556 (patch)
tree2531ef5b40462491747a2d3283a13f594835277f /sql/sql_select.cc
parente4fab954d1f33a7aff8661b016d308f8776ba4dd (diff)
downloadmariadb-git-127c721cef2c1b248af79a386c174a5e7addd556.tar.gz
Bug#54484 explain + prepared statement: crash and Got error -1 from storage engine
Subquery executes twice, at top level JOIN::optimize and ::execute stages. At first execution create_sort_index() function is called and FT_SELECT object is created and destroyed. HANDLER::ft_handler is cleaned up in the object destructor and at second execution FT_SELECT::get_next() method returns error. The fix is to reinit HANDLER::ft_handler field before re-execution of subquery. mysql-test/r/fulltext.result: test case mysql-test/t/fulltext.test: test case sql/item_func.cc: reinit ft_handler before re-execution of subquery sql/item_func.h: Fixed method name sql/sql_select.cc: reinit ft_handler before re-execution of subquery
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 08bd0c28738..a260b78f131 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -1713,6 +1713,9 @@ JOIN::reinit()
func->clear();
}
+ if (!(select_options & SELECT_DESCRIBE))
+ init_ftfuncs(thd, select_lex, test(order));
+
DBUG_RETURN(0);
}