summaryrefslogtreecommitdiff
path: root/sql/sql_lex.cc
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2013-12-18 15:59:51 +0200
committerunknown <sanja@askmonty.org>2013-12-18 15:59:51 +0200
commit57400ee6819e7dbb601b19f0ac223c491ef7359f (patch)
tree6284a8c2ad2ca3bc00f897f2d5a96169d66ac55d /sql/sql_lex.cc
parent3ec4296ec413e866c3efabc8dfa94172ad5f7c04 (diff)
downloadmariadb-git-57400ee6819e7dbb601b19f0ac223c491ef7359f.tar.gz
MDEV-5414: RAND() in a subselect : different behavior in MariaDB and MySQL
Materialization forced in case if rand() used in view or derived table to avoud several calls of rand for gting value of a field. Fixed set variable uncachable flag from - it shouldbe a side effect not a random value.
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r--sql/sql_lex.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 8ba3c671598..ccc51e39785 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -2340,7 +2340,9 @@ bool st_lex::can_be_merged()
// TODO: do not forget implement case when select_lex.table_list.elements==0
/* find non VIEW subqueries/unions */
- bool selects_allow_merge= select_lex.next_select() == 0;
+ bool selects_allow_merge= (select_lex.next_select() == 0 &&
+ !(select_lex.uncacheable &
+ UNCACHEABLE_RAND));
if (selects_allow_merge)
{
for (SELECT_LEX_UNIT *tmp_unit= select_lex.first_inner_unit();