diff options
author | unknown <evgen@moonbone.local> | 2005-08-15 23:05:05 +0400 |
---|---|---|
committer | unknown <evgen@moonbone.local> | 2005-08-15 23:05:05 +0400 |
commit | def42df9feebef4d513e834cfeacf73691927110 (patch) | |
tree | 762356cfe7e6b7b4041c264bbfe2db5669a2c765 /sql/sql_lex.cc | |
parent | a875ceaf64a9701d90966e50c2fd536b05b0b5ef (diff) | |
download | mariadb-git-def42df9feebef4d513e834cfeacf73691927110.tar.gz |
Fix bug #10624 Views with multiple UNION and UNION ALL produce incorrect
results.
st_select_lex_unit::print() was losing UNION ALL if in statement were present
UNION DISTINCT.
mysql-test/r/view.result:
Test case for bug #10624 Views with multiple UNION and UNION ALL produce incorrect results.
mysql-test/t/view.test:
Test case for bug #10624 Views with multiple UNION and UNION ALL produce incorrect results.
sql/sql_lex.cc:
Fix bug #10624 Views with multiple UNION and UNION ALL produce incorrect results.
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r-- | sql/sql_lex.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 86e677cc8dc..bbff64e516f 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1511,13 +1511,16 @@ bool st_select_lex::setup_ref_array(THD *thd, uint order_group_num) void st_select_lex_unit::print(String *str) { + bool union_all= !union_distinct; for (SELECT_LEX *sl= first_select(); sl; sl= sl->next_select()) { if (sl != first_select()) { str->append(" union ", 7); - if (!union_distinct) + if (union_all) str->append("all ", 4); + else if (union_distinct == sl) + union_all= true; } if (sl->braces) str->append('('); |