summaryrefslogtreecommitdiff
path: root/sql/sql_union.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2002-10-27 21:29:40 +0200
committerunknown <bell@sanja.is.com.ua>2002-10-27 21:29:40 +0200
commitd2c7f44ff638ab28970f25baccc87210388588cd (patch)
treed2ce1d2c09a200b3dc296e46b22eef59598dbf41 /sql/sql_union.cc
parent5a3fe219fb6e094f194f5dacf89020955db46c8e (diff)
downloadmariadb-git-d2c7f44ff638ab28970f25baccc87210388588cd.tar.gz
fixed union rexecution bug
mysql-test/r/subselect.result: test for union rexecution bug mysql-test/t/subselect.test: test for union rexecution bug
Diffstat (limited to 'sql/sql_union.cc')
-rw-r--r--sql/sql_union.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index f1c80bf8546..899dceab9bc 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -199,8 +199,12 @@ int st_select_lex_unit::exec()
{
DBUG_ENTER("st_select_lex_unit::exec");
SELECT_LEX *lex_select_save= thd->lex.select;
-
- if(depended || !item || !item->assigned())
+
+ if (executed && !depended)
+ DBUG_RETURN(0);
+ executed= 1;
+
+ if (depended || !item || !item->assigned())
{
if (optimized && item && item->assigned())
item->assigned(0); // We will reinit & rexecute unit