summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2004-11-16 22:58:02 +0200
committerunknown <bell@sanja.is.com.ua>2004-11-16 22:58:02 +0200
commit70ed3160d97d66da74ab031dde64217d501abd6e (patch)
treecd665433429045da9853d6f0ecfab97ed15fe6f8 /sql
parentdd93baa00da5e27f1a27df5762fe112f777f53c1 (diff)
downloadmariadb-git-70ed3160d97d66da74ab031dde64217d501abd6e.tar.gz
backport Serg's fix of FT interface (BUG#6523)
mysql-test/r/subselect.result: subqueries with full text search mysql-test/t/subselect.test: subqueries with full text search sql/ha_myisam.h: backport Serg's fix of FT interface sql/handler.h: backport Serg's fix of FT interface sql/opt_range.h: backport Serg's fix of FT interface sql/sql_select.cc: comment for previous patch
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_myisam.h1
-rw-r--r--sql/handler.h1
-rw-r--r--sql/opt_range.h2
-rw-r--r--sql/sql_select.cc2
4 files changed, 3 insertions, 3 deletions
diff --git a/sql/ha_myisam.h b/sql/ha_myisam.h
index 6fde84d6f6f..972d6b18e19 100644
--- a/sql/ha_myisam.h
+++ b/sql/ha_myisam.h
@@ -81,7 +81,6 @@ class ha_myisam: public handler
int index_first(byte * buf);
int index_last(byte * buf);
int index_next_same(byte *buf, const byte *key, uint keylen);
- int index_end() { ft_handler=NULL; return 0; }
int ft_init()
{
if (!ft_handler)
diff --git a/sql/handler.h b/sql/handler.h
index 252861e5c37..245defe61e0 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -372,6 +372,7 @@ public:
virtual int read_range_next();
int compare_key(key_range *range);
virtual int ft_init() { return HA_ERR_WRONG_COMMAND; }
+ void ft_end() { ft_handler=NULL; }
virtual FT_INFO *ft_init_ext(uint flags,uint inx,const byte *key,
uint keylen)
{ return NULL; }
diff --git a/sql/opt_range.h b/sql/opt_range.h
index 9b2e9e45bac..5a2044a59f4 100644
--- a/sql/opt_range.h
+++ b/sql/opt_range.h
@@ -154,7 +154,7 @@ class FT_SELECT: public QUICK_SELECT {
public:
FT_SELECT(THD *thd, TABLE *table, uint key):
QUICK_SELECT (thd, table, key, 1) { init(); }
-
+ ~FT_SELECT() { file->ft_end(); }
int init() { return error= file->ft_init(); }
int get_next() { return error= file->ft_read(record); }
};
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 06731d26073..5809bd2b7be 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -3834,7 +3834,7 @@ JOIN::join_free(bool full)
DBUG_ENTER("JOIN::join_free");
full= full || (!select_lex->uncacheable &&
- !thd->lex->describe);
+ !thd->lex->describe); // do not cleanup too early on EXPLAIN
if (table)
{