Commit 8fefb368 authored by sergefp@mysql.com's avatar sergefp@mysql.com

Merged

parents 69d985cc 96ff1e80
drop table if exists t1,t2,t9,`t1a``b`,v1,v2,v3,v4,v5,v6; drop table if exists t1,t2,t3,t4,t9,`t1a``b`,v1,v2,v3,v4,v5,v6;
drop view if exists t1,t2,`t1a``b`,v1,v2,v3,v4,v5,v6; drop view if exists t1,t2,`t1a``b`,v1,v2,v3,v4,v5,v6;
drop database if exists mysqltest; drop database if exists mysqltest;
use test; use test;
...@@ -2323,6 +2323,27 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -2323,6 +2323,27 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
DROP VIEW v1,v2; DROP VIEW v1,v2;
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
create table t1 (x int, y int);
create table t2 (x int, y int, z int);
create table t3 (x int, y int, z int);
create table t4 (x int, y int, z int);
create view v1 as
select t1.x
from (
(t1 join t2 on ((t1.y = t2.y)))
join
(t3 left join t4 on (t3.y = t4.y) and (t3.z = t4.z))
);
prepare stmt1 from "select count(*) from v1 where x = ?";
set @parm1=1;
execute stmt1 using @parm1;
count(*)
0
execute stmt1 using @parm1;
count(*)
0
drop view v1;
drop table t1,t2,t3,t4;
create table t1 (f1 int, f2 int); create table t1 (f1 int, f2 int);
insert into t1 values(1,1),(1,2),(1,3); insert into t1 values(1,1),(1,2),(1,3);
create view v1 as select f1 ,group_concat(f2 order by f2 asc) from t1 group by f1; create view v1 as select f1 ,group_concat(f2 order by f2 asc) from t1 group by f1;
......
--disable_warnings --disable_warnings
drop table if exists t1,t2,t9,`t1a``b`,v1,v2,v3,v4,v5,v6; drop table if exists t1,t2,t3,t4,t9,`t1a``b`,v1,v2,v3,v4,v5,v6;
drop view if exists t1,t2,`t1a``b`,v1,v2,v3,v4,v5,v6; drop view if exists t1,t2,`t1a``b`,v1,v2,v3,v4,v5,v6;
drop database if exists mysqltest; drop database if exists mysqltest;
--enable_warnings --enable_warnings
...@@ -2190,6 +2190,13 @@ DROP VIEW v1,v2; ...@@ -2190,6 +2190,13 @@ DROP VIEW v1,v2;
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
# #
prepare stmt1 from "select count(*) from v1 where x = ?";
set @parm1=1;
execute stmt1 using @parm1;
execute stmt1 using @parm1;
drop view v1;
drop table t1,t2,t3,t4;
# Bug #14466 lost sort order in GROUP_CONCAT() in a view # Bug #14466 lost sort order in GROUP_CONCAT() in a view
# #
create table t1 (f1 int, f2 int); create table t1 (f1 int, f2 int);
......
...@@ -2037,6 +2037,35 @@ void st_lex::cleanup_after_one_table_open() ...@@ -2037,6 +2037,35 @@ void st_lex::cleanup_after_one_table_open()
} }
/*
Do end-of-prepare fixup for list of tables and their merge-VIEWed tables
SYNOPSIS
fix_prepare_info_in_table_list()
thd Thread handle
tbl List of tables to process
DESCRIPTION
Perform end-end-of prepare fixup for list of tables, if any of the tables
is a merge-algorithm VIEW, recursively fix up its underlying tables as
well.
*/
static void fix_prepare_info_in_table_list(THD *thd, TABLE_LIST *tbl)
{
for (; tbl; tbl= tbl->next_local)
{
if (tbl->on_expr)
{
tbl->prep_on_expr= tbl->on_expr;
tbl->on_expr= tbl->on_expr->copy_andor_structure(thd);
}
fix_prepare_info_in_table_list(thd, tbl->merge_underlying_list);
}
}
/* /*
fix some structures at the end of preparation fix some structures at the end of preparation
...@@ -2056,16 +2085,7 @@ void st_select_lex::fix_prepare_information(THD *thd, Item **conds) ...@@ -2056,16 +2085,7 @@ void st_select_lex::fix_prepare_information(THD *thd, Item **conds)
prep_where= *conds; prep_where= *conds;
*conds= where= prep_where->copy_andor_structure(thd); *conds= where= prep_where->copy_andor_structure(thd);
} }
for (TABLE_LIST *tbl= (TABLE_LIST *)table_list.first; fix_prepare_info_in_table_list(thd, (TABLE_LIST *)table_list.first);
tbl;
tbl= tbl->next_local)
{
if (tbl->on_expr)
{
tbl->prep_on_expr= tbl->on_expr;
tbl->on_expr= tbl->on_expr->copy_andor_structure(thd);
}
}
} }
} }
......
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