Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into mysql.com:/Users/davi/mysql/mysql-5.1-runtime
This commit is contained in:
commit
d5847eb112
@ -2016,4 +2016,42 @@ i j
|
|||||||
10 10
|
10 10
|
||||||
unlock tables;
|
unlock tables;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
drop table if exists t1, t2;
|
||||||
|
drop trigger if exists trg1;
|
||||||
|
drop trigger if exists trg2;
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (b int);
|
||||||
|
create trigger trg1 after update on t1 for each row set @a= @a+1;
|
||||||
|
create trigger trg2 after update on t2 for each row set @b= @b+1;
|
||||||
|
insert into t1 values (1), (2), (3);
|
||||||
|
insert into t2 values (1), (2), (3);
|
||||||
|
set @a= 0;
|
||||||
|
set @b= 0;
|
||||||
|
update t1, t2 set t1.a= t1.a, t2.b= t2.b;
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
3 3
|
||||||
|
update t1, t2 set t1.a= t2.b, t2.b= t1.a;
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
6 6
|
||||||
|
update t1 set a= a;
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
9 6
|
||||||
|
update t2 set b= b;
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
9 9
|
||||||
|
update t1 set a= 1;
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
12 9
|
||||||
|
update t2 set b= 1;
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
12 12
|
||||||
|
drop trigger trg1;
|
||||||
|
drop trigger trg2;
|
||||||
|
drop table t1, t2;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
@ -2304,4 +2304,37 @@ unlock tables;
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#23771 AFTER UPDATE trigger not invoked when there are no changes of the data
|
||||||
|
#
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1, t2;
|
||||||
|
drop trigger if exists trg1;
|
||||||
|
drop trigger if exists trg2;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (b int);
|
||||||
|
create trigger trg1 after update on t1 for each row set @a= @a+1;
|
||||||
|
create trigger trg2 after update on t2 for each row set @b= @b+1;
|
||||||
|
insert into t1 values (1), (2), (3);
|
||||||
|
insert into t2 values (1), (2), (3);
|
||||||
|
set @a= 0;
|
||||||
|
set @b= 0;
|
||||||
|
update t1, t2 set t1.a= t1.a, t2.b= t2.b;
|
||||||
|
select @a, @b;
|
||||||
|
update t1, t2 set t1.a= t2.b, t2.b= t1.a;
|
||||||
|
select @a, @b;
|
||||||
|
update t1 set a= a;
|
||||||
|
select @a, @b;
|
||||||
|
update t2 set b= b;
|
||||||
|
select @a, @b;
|
||||||
|
update t1 set a= 1;
|
||||||
|
select @a, @b;
|
||||||
|
update t2 set b= 1;
|
||||||
|
select @a, @b;
|
||||||
|
drop trigger trg1;
|
||||||
|
drop trigger trg2;
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
--echo End of 5.1 tests.
|
--echo End of 5.1 tests.
|
||||||
|
@ -643,14 +643,6 @@ int mysql_update(THD *thd,
|
|||||||
updated++;
|
updated++;
|
||||||
else
|
else
|
||||||
error= 0;
|
error= 0;
|
||||||
|
|
||||||
if (table->triggers &&
|
|
||||||
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
|
||||||
TRG_ACTION_AFTER, TRUE))
|
|
||||||
{
|
|
||||||
error= 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (!ignore ||
|
else if (!ignore ||
|
||||||
table->file->is_fatal_error(error, HA_CHECK_DUP_KEY))
|
table->file->is_fatal_error(error, HA_CHECK_DUP_KEY))
|
||||||
@ -669,6 +661,14 @@ int mysql_update(THD *thd,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (table->triggers &&
|
||||||
|
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
||||||
|
TRG_ACTION_AFTER, TRUE))
|
||||||
|
{
|
||||||
|
error= 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!--limit && using_limit)
|
if (!--limit && using_limit)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -1633,13 +1633,13 @@ bool multi_update::send_data(List<Item> ¬_used_values)
|
|||||||
trans_safe= 0;
|
trans_safe= 0;
|
||||||
thd->transaction.stmt.modified_non_trans_table= TRUE;
|
thd->transaction.stmt.modified_non_trans_table= TRUE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (table->triggers &&
|
if (table->triggers &&
|
||||||
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
||||||
TRG_ACTION_AFTER, TRUE))
|
TRG_ACTION_AFTER, TRUE))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
@ -1860,13 +1860,13 @@ int multi_update::do_updates()
|
|||||||
updated++;
|
updated++;
|
||||||
else
|
else
|
||||||
local_error= 0;
|
local_error= 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (table->triggers &&
|
if (table->triggers &&
|
||||||
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
||||||
TRG_ACTION_AFTER, TRUE))
|
TRG_ACTION_AFTER, TRUE))
|
||||||
goto err2;
|
goto err2;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (updated != org_updated)
|
if (updated != org_updated)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user