summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2004-11-17 10:59:04 +0200
committerunknown <bell@sanja.is.com.ua>2004-11-17 10:59:04 +0200
commitdcd6e3d070abf96d9d2bf69bd42ff668059e8e83 (patch)
tree2d6572e4bc19b9976c2e7c80763f6c9053516018 /sql
parent3a301ac1f8466eee0941344729a9ba3521da36a7 (diff)
parent70ed3160d97d66da74ab031dde64217d501abd6e (diff)
downloadmariadb-git-dcd6e3d070abf96d9d2bf69bd42ff668059e8e83.tar.gz
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-global-4.1
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_class.h2
-rw-r--r--sql/sql_lex.cc1
-rw-r--r--sql/sql_parse.cc1
-rw-r--r--sql/sql_select.cc6
7 files changed, 8 insertions, 6 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_class.h b/sql/sql_class.h
index 312d9de9794..6d77b75d70f 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -1305,7 +1305,7 @@ public:
if (copy_field) /* Fix for Intel compiler */
{
delete [] copy_field;
- copy_field=0;
+ save_copy_field= copy_field= 0;
}
}
};
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 679ffb2140e..b5cb8735875 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -157,6 +157,7 @@ void lex_start(THD *thd, uchar *buf,uint length)
lex->ignore_space=test(thd->variables.sql_mode & MODE_IGNORE_SPACE);
lex->sql_command=SQLCOM_END;
lex->duplicates= DUP_ERROR;
+ lex->proc_list.first= 0;
}
void lex_end(LEX *lex)
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 7420f9de100..078333c9552 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -3940,7 +3940,6 @@ mysql_init_select(LEX *lex)
{
DBUG_ASSERT(lex->result == 0);
lex->exchange= 0;
- lex->proc_list.first= 0;
}
}
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 9162cd30d63..5809bd2b7be 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -936,7 +936,7 @@ JOIN::optimize()
}
}
- if (select_lex->master_unit()->uncacheable)
+ if (select_lex->uncacheable)
{
if (!(tmp_join= (JOIN*)thd->alloc(sizeof(JOIN))))
DBUG_RETURN(-1);
@@ -3833,7 +3833,8 @@ JOIN::join_free(bool full)
JOIN_TAB *tab,*end;
DBUG_ENTER("JOIN::join_free");
- full= full || !select_lex->uncacheable;
+ full= full || (!select_lex->uncacheable &&
+ !thd->lex->describe); // do not cleanup too early on EXPLAIN
if (table)
{
@@ -3862,6 +3863,7 @@ JOIN::join_free(bool full)
for (tab= join_tab, end= tab+tables; tab != end; tab++)
tab->cleanup();
table= 0;
+ tables= 0;
}
else
{