mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge moonbone.local:/work/mysql-4.1-bug-11868
into moonbone.local:/work/mysql-5.0-bug-11482 mysql-test/r/update.result: Auto merged mysql-test/t/update.test: Auto merged sql/sql_select.cc: Auto merged
This commit is contained in:
@ -240,3 +240,14 @@ update t1, t2 set t1.a = t2.a where t2.b = t1.b;
|
|||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t1(f1 int, f2 int);
|
||||||
|
create table t2(f3 int, f4 int);
|
||||||
|
create index idx on t2(f3);
|
||||||
|
insert into t1 values(1,0),(2,0);
|
||||||
|
insert into t2 values(1,1),(2,2);
|
||||||
|
UPDATE t1 SET t1.f2=(SELECT MAX(t2.f4) FROM t2 WHERE t2.f3=t1.f1);
|
||||||
|
select * from t1;
|
||||||
|
f1 f2
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -201,3 +201,16 @@ analyze table t1,t2;
|
|||||||
update t1, t2 set t1.a = t2.a where t2.b = t1.b;
|
update t1, t2 set t1.a = t2.a where t2.b = t1.b;
|
||||||
show warnings;
|
show warnings;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #11868 Update with subquery with ref built with a key from the updated
|
||||||
|
# table crashes server
|
||||||
|
#
|
||||||
|
create table t1(f1 int, f2 int);
|
||||||
|
create table t2(f3 int, f4 int);
|
||||||
|
create index idx on t2(f3);
|
||||||
|
insert into t1 values(1,0),(2,0);
|
||||||
|
insert into t2 values(1,1),(2,2);
|
||||||
|
UPDATE t1 SET t1.f2=(SELECT MAX(t2.f4) FROM t2 WHERE t2.f3=t1.f1);
|
||||||
|
select * from t1;
|
||||||
|
drop table t1,t2;
|
||||||
|
@ -5185,7 +5185,12 @@ static void add_not_null_conds(JOIN *join)
|
|||||||
DBUG_ASSERT(item->type() == Item::FIELD_ITEM);
|
DBUG_ASSERT(item->type() == Item::FIELD_ITEM);
|
||||||
Item_field *not_null_item= (Item_field*)item;
|
Item_field *not_null_item= (Item_field*)item;
|
||||||
JOIN_TAB *referred_tab= not_null_item->field->table->reginfo.join_tab;
|
JOIN_TAB *referred_tab= not_null_item->field->table->reginfo.join_tab;
|
||||||
if (referred_tab->join != join)
|
/*
|
||||||
|
For UPDATE queries such as:
|
||||||
|
UPDATE t1 SET t1.f2=(SELECT MAX(t2.f4) FROM t2 WHERE t2.f3=t1.f1);
|
||||||
|
not_null_item is the t1.f1, but it's referred_tab is 0.
|
||||||
|
*/
|
||||||
|
if (!referred_tab || referred_tab->join != join)
|
||||||
continue;
|
continue;
|
||||||
Item *notnull;
|
Item *notnull;
|
||||||
if (!(notnull= new Item_func_isnotnull(not_null_item)))
|
if (!(notnull= new Item_func_isnotnull(not_null_item)))
|
||||||
|
Reference in New Issue
Block a user