Merge mockturtle.local:/home/dlenev/src/mysql-5.0-bg20670-2
into mockturtle.local:/home/dlenev/src/mysql-5.1-bg20670 mysql-test/r/trigger.result: Auto merged mysql-test/t/trigger.test: Auto merged sql/sql_trigger.cc: Auto merged sql/key.cc: Using 5.1 version of the code. sql/mysql_priv.h: Using 5.1 version of the code. sql/opt_range.cc: Using 5.1 version of the code. sql/opt_range.h: Using 5.1 version of the code. sql/sql_update.cc: Using 5.1 version of the code. sql/sql_trigger.h: Manual merge.
This commit is contained in:
commit
33e63d3b22
@ -1173,4 +1173,16 @@ TRIGGER t2_bi BEFORE INSERT ON t2 FOR EACH ROW SET @a = 2;
|
||||
ERROR HY000: String '1234567890abcdefghij1234567890abcdefghij1234567890abcdefghijQWERTY' is too long for host name (should be no longer than 60)
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
drop table if exists t1;
|
||||
create table t1 (i int, j int key);
|
||||
insert into t1 values (1,1), (2,2), (3,3);
|
||||
create trigger t1_bu before update on t1 for each row
|
||||
set new.j = new.j + 10;
|
||||
update t1 set i= i+ 10 where j > 2;
|
||||
select * from t1;
|
||||
i j
|
||||
1 1
|
||||
2 2
|
||||
13 13
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
|
@ -1421,4 +1421,23 @@ DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug#20670 "UPDATE using key and invoking trigger that modifies
|
||||
# this key does not stop"
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (i int, j int key);
|
||||
insert into t1 values (1,1), (2,2), (3,3);
|
||||
create trigger t1_bu before update on t1 for each row
|
||||
set new.j = new.j + 10;
|
||||
# This should not work indefinitely and should cause
|
||||
# expected result
|
||||
update t1 set i= i+ 10 where j > 2;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1582,6 +1582,38 @@ void Table_triggers_list::mark_fields_used(trg_event_type event)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Check if field of subject table can be changed in before update trigger.
|
||||
|
||||
SYNOPSIS
|
||||
is_updated_in_before_update_triggers()
|
||||
field Field object for field to be checked
|
||||
|
||||
NOTE
|
||||
Field passed to this function should be bound to the same
|
||||
TABLE object as Table_triggers_list.
|
||||
|
||||
RETURN VALUE
|
||||
TRUE Field is changed
|
||||
FALSE Otherwise
|
||||
*/
|
||||
|
||||
bool Table_triggers_list::is_updated_in_before_update_triggers(Field *fld)
|
||||
{
|
||||
Item_trigger_field *trg_fld;
|
||||
for (trg_fld= trigger_fields[TRG_EVENT_UPDATE][TRG_ACTION_BEFORE];
|
||||
trg_fld != 0;
|
||||
trg_fld= trg_fld->next_trg_field)
|
||||
{
|
||||
if (trg_fld->get_settable_routine_parameter() &&
|
||||
trg_fld->field_idx != (uint)-1 &&
|
||||
table->field[trg_fld->field_idx]->eq(fld))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Trigger BUG#14090 compatibility hook
|
||||
|
||||
|
@ -116,11 +116,6 @@ public:
|
||||
bodies[TRG_EVENT_DELETE][TRG_ACTION_AFTER]);
|
||||
}
|
||||
|
||||
bool has_before_update_triggers()
|
||||
{
|
||||
return test(bodies[TRG_EVENT_UPDATE][TRG_ACTION_BEFORE]);
|
||||
}
|
||||
|
||||
void set_table(TABLE *new_table);
|
||||
|
||||
void mark_fields_used(trg_event_type event);
|
||||
|
Loading…
x
Reference in New Issue
Block a user