Commit c4339546 authored by unknown's avatar unknown

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into  mysql.com:/home/dlenev/src/mysql-5.0-mysqlproc
parents a8f13702 a6ad1c5e
...@@ -297,7 +297,7 @@ drop trigger t1.trg; ...@@ -297,7 +297,7 @@ drop trigger t1.trg;
ERROR HY000: Trigger does not exist ERROR HY000: Trigger does not exist
create view v1 as select * from t1; create view v1 as select * from t1;
create trigger trg before insert on v1 for each row set @a:=1; create trigger trg before insert on v1 for each row set @a:=1;
ERROR HY000: Trigger's 'v1' is view or temporary table ERROR HY000: 'test.v1' is not BASE TABLE
drop view v1; drop view v1;
drop table t1; drop table t1;
create temporary table t1 (i int); create temporary table t1 (i int);
...@@ -578,4 +578,5 @@ create trigger t1_bu before update on t1 for each row set new.col1= bug5893(); ...@@ -578,4 +578,5 @@ create trigger t1_bu before update on t1 for each row set new.col1= bug5893();
drop function bug5893; drop function bug5893;
update t1 set col2 = 4; update t1 set col2 = 4;
ERROR 42000: FUNCTION test.bug5893 does not exist ERROR 42000: FUNCTION test.bug5893 does not exist
drop trigger t1.t1_bu;
drop table t1; drop table t1;
...@@ -317,7 +317,7 @@ drop trigger t1.trg; ...@@ -317,7 +317,7 @@ drop trigger t1.trg;
drop trigger t1.trg; drop trigger t1.trg;
create view v1 as select * from t1; create view v1 as select * from t1;
--error 1361 --error 1347
create trigger trg before insert on v1 for each row set @a:=1; create trigger trg before insert on v1 for each row set @a:=1;
drop view v1; drop view v1;
...@@ -576,6 +576,8 @@ drop table t1, t2; ...@@ -576,6 +576,8 @@ drop table t1, t2;
# Test for bug #5893 "Triggers with dropped functions cause crashes" # Test for bug #5893 "Triggers with dropped functions cause crashes"
# Appropriate error should be reported instead of crash. # Appropriate error should be reported instead of crash.
# Also test for bug #11889 "Server crashes when dropping trigger
# using stored routine".
--disable_warnings --disable_warnings
drop function if exists bug5893; drop function if exists bug5893;
--enable_warnings --enable_warnings
...@@ -586,4 +588,6 @@ create trigger t1_bu before update on t1 for each row set new.col1= bug5893(); ...@@ -586,4 +588,6 @@ create trigger t1_bu before update on t1 for each row set new.col1= bug5893();
drop function bug5893; drop function bug5893;
--error 1305 --error 1305
update t1 set col2 = 4; update t1 set col2 = 4;
# This should not crash server too.
drop trigger t1.t1_bu;
drop table t1; drop table t1;
...@@ -69,7 +69,10 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) ...@@ -69,7 +69,10 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
But do we want this ? But do we want this ?
*/ */
if (open_and_lock_tables(thd, tables)) /* We should have only one table in table list. */
DBUG_ASSERT(tables->next_global == 0);
if (!(table= open_ltable(thd, tables, tables->lock_type)))
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
/* /*
...@@ -80,8 +83,6 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) ...@@ -80,8 +83,6 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
if (check_global_access(thd, SUPER_ACL)) if (check_global_access(thd, SUPER_ACL))
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
table= tables->table;
/* /*
We do not allow creation of triggers on views or temporary tables. We do not allow creation of triggers on views or temporary tables.
We have to do this check here and not in We have to do this check here and not in
......
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