mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Fix for bug #5888 "Triggers with nonexistent columns cause packets
out of order". (final version) Now instead of binding Item_trigger_field to TABLE objects during trigger definition parsing at table open, we perform pass through special list of all such objects in trigger. This allows easily check all references to fields in old/new version of row in trigger during execution of CREATE TRIGGER statement (this is more courtesy for users since we can't check everything anyway). We also report that such reference is bad by returning error from Item_trigger_field::fix_fields() method (instead of setup_field()) This means that if trigger is broken we will bark during trigger execution instead of trigger definition parsing at table open. (i.e. now we allow to open tables with broken triggers).
This commit is contained in:
@@ -150,6 +150,10 @@ create trigger trg before delete on t1 for each row set new.i:=1;
|
||||
ERROR HY000: There is no NEW row in on DELETE trigger
|
||||
create trigger trg after update on t1 for each row set new.i:=1;
|
||||
ERROR HY000: Updating of NEW row is not allowed in after trigger
|
||||
create trigger trg before update on t1 for each row set new.j:=1;
|
||||
ERROR 42S22: Unknown column 'j' in 'NEW'
|
||||
create trigger trg before update on t1 for each row set @a:=old.j;
|
||||
ERROR 42S22: Unknown column 'j' in 'OLD'
|
||||
create trigger trg before insert on t2 for each row set @a:=1;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
create trigger trg before insert on t1 for each row set @a:=1;
|
||||
|
||||
Reference in New Issue
Block a user