diff options
author | unknown <pem@mysql.com> | 2003-03-06 19:16:46 +0100 |
---|---|---|
committer | unknown <pem@mysql.com> | 2003-03-06 19:16:46 +0100 |
commit | 6b3c898655bf9159f4b90aa7a0f055ce9667fd2c (patch) | |
tree | f4a561d92b3ea7480c4540a2cf93cfb18a9520b4 /sql | |
parent | f74b36a24266e290cf23c7d06333c3a558e33af9 (diff) | |
download | mariadb-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.cc | 3 | ||||
-rw-r--r-- | sql/sql_select.cc | 3 |
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; } |