Merge ssh://bk-internal.mysql.com//home/bk/mysql-5.0-opt
into kaamos.(none):/data/src/opt/mysql-5.0-opt
This commit is contained in:
commit
c4fc5b096e
@ -3618,4 +3618,20 @@ ERROR HY000: Field of view 'test.v1' underlying table doesn't have a default val
|
|||||||
set @@sql_mode=@old_mode;
|
set @@sql_mode=@old_mode;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a int, key(a));
|
||||||
|
create table t2 (c int);
|
||||||
|
create view v1 as select a b from t1;
|
||||||
|
create view v2 as select 1 a from t2, v1 where c in
|
||||||
|
(select 1 from t1 where b = a);
|
||||||
|
insert into t1 values (1), (1);
|
||||||
|
insert into t2 values (1), (1);
|
||||||
|
prepare stmt from "select * from v2 where a = 1";
|
||||||
|
execute stmt;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop view v1, v2;
|
||||||
|
drop table t1, t2;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
|
@ -3470,5 +3470,27 @@ insert into v1 values(1);
|
|||||||
set @@sql_mode=@old_mode;
|
set @@sql_mode=@old_mode;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #33389: Selecting from a view into a table from within SP or trigger
|
||||||
|
# crashes server
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (a int, key(a));
|
||||||
|
create table t2 (c int);
|
||||||
|
|
||||||
|
create view v1 as select a b from t1;
|
||||||
|
create view v2 as select 1 a from t2, v1 where c in
|
||||||
|
(select 1 from t1 where b = a);
|
||||||
|
|
||||||
|
insert into t1 values (1), (1);
|
||||||
|
insert into t2 values (1), (1);
|
||||||
|
|
||||||
|
prepare stmt from "select * from v2 where a = 1";
|
||||||
|
execute stmt;
|
||||||
|
|
||||||
|
drop view v1, v2;
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
|
||||||
|
24
sql/item.cc
24
sql/item.cc
@ -3903,6 +3903,18 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
|
|||||||
else if (!from_field)
|
else if (!from_field)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
if (!outer_fixed && cached_table && cached_table->select_lex &&
|
||||||
|
context->select_lex &&
|
||||||
|
cached_table->select_lex != context->select_lex)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
if ((ret= fix_outer_field(thd, &from_field, reference)) < 0)
|
||||||
|
goto error;
|
||||||
|
else if (!ret)
|
||||||
|
return FALSE;
|
||||||
|
outer_fixed= 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if it is not expression from merged VIEW we will set this field.
|
if it is not expression from merged VIEW we will set this field.
|
||||||
|
|
||||||
@ -3918,18 +3930,6 @@ bool Item_field::fix_fields(THD *thd, Item **reference)
|
|||||||
if (from_field == view_ref_found)
|
if (from_field == view_ref_found)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!outer_fixed && cached_table && cached_table->select_lex &&
|
|
||||||
context->select_lex &&
|
|
||||||
cached_table->select_lex != context->select_lex)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
if ((ret= fix_outer_field(thd, &from_field, reference)) < 0)
|
|
||||||
goto error;
|
|
||||||
else if (!ret)
|
|
||||||
return FALSE;
|
|
||||||
outer_fixed= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_field(from_field);
|
set_field(from_field);
|
||||||
if (thd->lex->in_sum_func &&
|
if (thd->lex->in_sum_func &&
|
||||||
thd->lex->in_sum_func->nest_level ==
|
thd->lex->in_sum_func->nest_level ==
|
||||||
|
Loading…
x
Reference in New Issue
Block a user