Loading mysql-test/r/union.result +16 −0 Original line number Diff line number Diff line Loading @@ -872,6 +872,22 @@ count(*) show status like 'Slow_queries'; Variable_name Value Slow_queries 3 flush status; select a from t1 where b not in (1,2,3) union select a from t1 where b not in (4,5,6); a 4 5 3 6 7 8 9 10 1 2 show status like 'Slow_queries'; Variable_name Value Slow_queries 1 drop table t1; create table t1 ( RID int(11) not null default '0', IID int(11) not null default '0', nada varchar(50) not null,NAME varchar(50) not null,PHONE varchar(50) not null) engine=MyISAM; insert into t1 ( RID,IID,nada,NAME,PHONE) values (1, 1, 'main', 'a', '111'), (2, 1, 'main', 'b', '222'), (3, 1, 'main', 'c', '333'), (4, 1, 'main', 'd', '444'), (5, 1, 'main', 'e', '555'), (6, 2, 'main', 'c', '333'), (7, 2, 'main', 'd', '454'), (8, 2, 'main', 'e', '555'), (9, 2, 'main', 'f', '666'), (10, 2, 'main', 'g', '777'); Loading mysql-test/t/union.test +4 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,10 @@ select count(*) from t1 where b=13 union select count(*) from t1 where a=7; show status like 'Slow_queries'; select count(*) from t1 where a=7 union select count(*) from t1 where b=13; show status like 'Slow_queries'; # additional test for examined rows flush status; select a from t1 where b not in (1,2,3) union select a from t1 where b not in (4,5,6); show status like 'Slow_queries'; drop table t1; # Loading sql/sql_union.cc +7 −4 Original line number Diff line number Diff line Loading @@ -466,13 +466,16 @@ int st_select_lex_unit::exec() } res= sl->join->error; offset_limit_cnt= sl->offset_limit; if (!res && union_result->flush()) if (!res) { examined_rows+= thd->examined_row_count; if (union_result->flush()) { thd->lex->current_select= lex_select_save; DBUG_RETURN(1); } } } if (res) { thd->lex->current_select= lex_select_save; Loading Loading
mysql-test/r/union.result +16 −0 Original line number Diff line number Diff line Loading @@ -872,6 +872,22 @@ count(*) show status like 'Slow_queries'; Variable_name Value Slow_queries 3 flush status; select a from t1 where b not in (1,2,3) union select a from t1 where b not in (4,5,6); a 4 5 3 6 7 8 9 10 1 2 show status like 'Slow_queries'; Variable_name Value Slow_queries 1 drop table t1; create table t1 ( RID int(11) not null default '0', IID int(11) not null default '0', nada varchar(50) not null,NAME varchar(50) not null,PHONE varchar(50) not null) engine=MyISAM; insert into t1 ( RID,IID,nada,NAME,PHONE) values (1, 1, 'main', 'a', '111'), (2, 1, 'main', 'b', '222'), (3, 1, 'main', 'c', '333'), (4, 1, 'main', 'd', '444'), (5, 1, 'main', 'e', '555'), (6, 2, 'main', 'c', '333'), (7, 2, 'main', 'd', '454'), (8, 2, 'main', 'e', '555'), (9, 2, 'main', 'f', '666'), (10, 2, 'main', 'g', '777'); Loading
mysql-test/t/union.test +4 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,10 @@ select count(*) from t1 where b=13 union select count(*) from t1 where a=7; show status like 'Slow_queries'; select count(*) from t1 where a=7 union select count(*) from t1 where b=13; show status like 'Slow_queries'; # additional test for examined rows flush status; select a from t1 where b not in (1,2,3) union select a from t1 where b not in (4,5,6); show status like 'Slow_queries'; drop table t1; # Loading
sql/sql_union.cc +7 −4 Original line number Diff line number Diff line Loading @@ -466,13 +466,16 @@ int st_select_lex_unit::exec() } res= sl->join->error; offset_limit_cnt= sl->offset_limit; if (!res && union_result->flush()) if (!res) { examined_rows+= thd->examined_row_count; if (union_result->flush()) { thd->lex->current_select= lex_select_save; DBUG_RETURN(1); } } } if (res) { thd->lex->current_select= lex_select_save; Loading