Commit 90313b02 authored by unknown's avatar unknown

Merge mysql.com:/Users/davi/mysql/bugs/23771-5.1

into  mysql.com:/Users/davi/mysql/mysql-5.1-runtime

parents da1a6127 8d51c6ad
......@@ -2016,4 +2016,42 @@ i j
10 10
unlock tables;
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.
......@@ -2304,4 +2304,37 @@ unlock tables;
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.
......@@ -643,14 +643,6 @@ int mysql_update(THD *thd,
updated++;
else
error= 0;
if (table->triggers &&
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
TRG_ACTION_AFTER, TRUE))
{
error= 1;
break;
}
}
else if (!ignore ||
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)
{
/*
......@@ -1644,12 +1644,12 @@ bool multi_update::send_data(List<Item> &not_used_values)
trans_safe= 0;
thd->transaction.stmt.modified_non_trans_table= TRUE;
}
if (table->triggers &&
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
TRG_ACTION_AFTER, TRUE))
DBUG_RETURN(1);
}
}
if (table->triggers &&
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
TRG_ACTION_AFTER, TRUE))
DBUG_RETURN(1);
}
else
{
......@@ -1881,12 +1881,12 @@ int multi_update::do_updates()
updated++;
else
local_error= 0;
if (table->triggers &&
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
TRG_ACTION_AFTER, TRUE))
goto err2;
}
if (table->triggers &&
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
TRG_ACTION_AFTER, TRUE))
goto err2;
}
if (updated != org_updated)
......
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