summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <pem@mysql.com>2003-03-06 19:16:46 +0100
committerunknown <pem@mysql.com>2003-03-06 19:16:46 +0100
commit6b3c898655bf9159f4b90aa7a0f055ce9667fd2c (patch)
treef4a561d92b3ea7480c4540a2cf93cfb18a9520b4 /sql
parentf74b36a24266e290cf23c7d06333c3a558e33af9 (diff)
downloadmariadb-git-6b3c898655bf9159f4b90aa7a0f055ce9667fd2c.tar.gz
Fixed reentrantness bugs in select (lex->result) and select_dumpvar, and added cool
prime number test example. mysql-test/r/sp.result: New prime number example. (Good for future benchmarkings too.) mysql-test/t/sp.test: New prime number example. (Good for future benchmarkings too.) sql/sql_class.cc: Reset row_count in select_dumpvar when preparing, to make it reentrant as a lex member. sql/sql_select.cc: Don't delete result if it's a lex member (since lex needs to be reentrant).
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_class.cc3
-rw-r--r--sql/sql_select.cc3
2 files changed, 5 insertions, 1 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 5ac904393f5..ee14ce16593 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -972,6 +972,8 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
Item *item;
my_var *mv;
LEX_STRING *ls;
+
+ row_count= 0;
if (var_list.elements != list.elements)
{
my_error(ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT, MYF(0));
@@ -996,6 +998,7 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
}
return 0;
}
+
bool select_dumpvar::send_data(List<Item> &items)
{
List_iterator_fast<Item_func_set_user_var> li(vars);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 4543c6bc5d0..c99da1928ca 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -191,7 +191,8 @@ int handle_select(THD *thd, LEX *lex, select_result *result)
send_error(thd, 0, NullS);
res= 1;
}
- delete result;
+ if (result != lex->result)
+ delete result;
return res;
}