Commit ceb19329 authored by evgen@moonbone.local's avatar evgen@moonbone.local

Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0

into moonbone.local:/work/15347-bug-5.0-mysql
parents 0e2fac2d cea01c73
...@@ -3337,6 +3337,17 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -3337,6 +3337,17 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 Using index
1 SIMPLE t3 const PRIMARY PRIMARY 8 const,const 1 1 SIMPLE t3 const PRIMARY PRIMARY 8 const,const 1
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
create table t1 (f1 int);
insert into t1 values(1),(2);
create table t2 (f2 int, f3 int, key(f2));
insert into t2 values(1,1),(2,2);
create table t3 (f4 int not null);
insert into t3 values (2),(2),(2);
select f1,(select count(*) from t2,t3 where f2=f1 and f3=f4) as count from t1;
f1 count
1 0
2 3
drop table t1,t2,t3;
create table t1 (f1 int unique); create table t1 (f1 int unique);
create table t2 (f2 int unique); create table t2 (f2 int unique);
create table t3 (f3 int unique); create table t3 (f3 int unique);
......
...@@ -2806,6 +2806,19 @@ EXPLAIN SELECT t2.key_a,foo ...@@ -2806,6 +2806,19 @@ EXPLAIN SELECT t2.key_a,foo
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
#
# Bug#15347 Wrong result of subselect when records cache and set functions
# are involved
#
create table t1 (f1 int);
insert into t1 values(1),(2);
create table t2 (f2 int, f3 int, key(f2));
insert into t2 values(1,1),(2,2);
create table t3 (f4 int not null);
insert into t3 values (2),(2),(2);
select f1,(select count(*) from t2,t3 where f2=f1 and f3=f4) as count from t1;
drop table t1,t2,t3;
# #
# Bug #15633 Evaluation of Item_equal for non-const table caused wrong # Bug #15633 Evaluation of Item_equal for non-const table caused wrong
# select result # select result
......
...@@ -9896,6 +9896,7 @@ flush_cached_records(JOIN *join,JOIN_TAB *join_tab,bool skip_last) ...@@ -9896,6 +9896,7 @@ flush_cached_records(JOIN *join,JOIN_TAB *join_tab,bool skip_last)
int error; int error;
READ_RECORD *info; READ_RECORD *info;
join_tab->table->null_row= 0;
if (!join_tab->cache.records) if (!join_tab->cache.records)
return NESTED_LOOP_OK; /* Nothing to do */ return NESTED_LOOP_OK; /* Nothing to do */
if (skip_last) if (skip_last)
......
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