Commit a8bd285f authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-6785 Wrong result on 2nd execution of PS with aggregate function, FROM SQ or MERGE view

a different fix for view.test --ps-protocol crash
(revert the old fix that has caused a regression)
parent 303eec57
......@@ -5500,6 +5500,20 @@ a b a b a c
9 10 9 10 9 10
drop view v1;
drop table t1,t2;
create table t1 (i int not null);
insert into t1 values (1),(2);
create table t2 (j int not null);
insert into t2 values (11),(12);
create algorithm=merge view v3 as select t1.* from t2 left join t1 on (t2.j = t1.i);
prepare stmt from 'select count(v3.i) from t1, v3';
execute stmt;
count(v3.i)
0
execute stmt;
count(v3.i)
0
drop table t1, t2;
drop view v3;
# -----------------------------------------------------------------
# -- End of 10.0 tests.
# -----------------------------------------------------------------
......
......@@ -5364,6 +5364,21 @@ select * from t2, t1, v1 where t1.a=t2.a and t1.a=v1.a;
drop view v1;
drop table t1,t2;
#
# MDEV-6785 Wrong result on 2nd execution of PS with aggregate function, FROM SQ or MERGE view
#
create table t1 (i int not null);
insert into t1 values (1),(2);
create table t2 (j int not null);
insert into t2 values (11),(12);
create algorithm=merge view v3 as select t1.* from t2 left join t1 on (t2.j = t1.i);
prepare stmt from 'select count(v3.i) from t1, v3';
execute stmt;
execute stmt;
drop table t1, t2;
drop view v3;
--echo # -----------------------------------------------------------------
--echo # -- End of 10.0 tests.
--echo # -----------------------------------------------------------------
......
......@@ -465,8 +465,6 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
}
}
if (!derived->merged_for_insert)
dt_select->first_cond_optimization= FALSE; // consider it optimized
exit_merge:
if (arena)
thd->restore_active_arena(arena, &backup);
......
......@@ -633,7 +633,7 @@ inline int setup_without_group(THD *thd, Item **ref_pointer_array,
res= setup_conds(thd, tables, leaves, conds);
if (thd->lex->current_select->first_cond_optimization)
{
if (!res && *conds)
if (!res && *conds && ! thd->lex->current_select->merged_into)
(*reserved)= (*conds)->exists2in_reserved_items();
else
(*reserved)= 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment