1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

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

into  mysql.com:/home/dlenev/src/mysql-5.0-tn


mysql-test/r/information_schema.result:
  Auto merged
mysql-test/t/information_schema.test:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/share/errmsg.txt:
  Manual merge.
This commit is contained in:
unknown
2005-07-19 20:55:09 +04:00
25 changed files with 644 additions and 130 deletions

View File

@ -48,6 +48,7 @@ TABLE_PRIVILEGES
COLUMN_PRIVILEGES
TABLE_CONSTRAINTS
KEY_COLUMN_USAGE
TRIGGERS
columns_priv
db
func
@ -77,6 +78,7 @@ c table_name
TABLES TABLES
TABLE_PRIVILEGES TABLE_PRIVILEGES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TRIGGERS TRIGGERS
tables_priv tables_priv
time_zone time_zone
time_zone_leap_second time_zone_leap_second
@ -94,6 +96,7 @@ c table_name
TABLES TABLES
TABLE_PRIVILEGES TABLE_PRIVILEGES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TRIGGERS TRIGGERS
tables_priv tables_priv
time_zone time_zone
time_zone_leap_second time_zone_leap_second
@ -111,6 +114,7 @@ c table_name
TABLES TABLES
TABLE_PRIVILEGES TABLE_PRIVILEGES
TABLE_CONSTRAINTS TABLE_CONSTRAINTS
TRIGGERS TRIGGERS
tables_priv tables_priv
time_zone time_zone
time_zone_leap_second time_zone_leap_second
@ -580,6 +584,7 @@ Tables_in_information_schema (T%)
TABLES
TABLE_PRIVILEGES
TABLE_CONSTRAINTS
TRIGGERS
create database information_schema;
ERROR HY000: Can't create database 'information_schema'; database exists
use information_schema;
@ -588,6 +593,7 @@ Tables_in_information_schema (T%) Table_type
TABLES TEMPORARY
TABLE_PRIVILEGES TEMPORARY
TABLE_CONSTRAINTS TEMPORARY
TRIGGERS TEMPORARY
create table t1(a int);
ERROR 42S02: Unknown table 't1' in information_schema
use test;
@ -599,6 +605,7 @@ Tables_in_information_schema (T%)
TABLES
TABLE_PRIVILEGES
TABLE_CONSTRAINTS
TRIGGERS
select table_name from tables where table_name='user';
table_name
user
@ -693,7 +700,7 @@ CREATE TABLE t_crashme ( f1 BIGINT);
CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
count(*)
100
101
drop view a2, a1;
drop table t_crashme;
select table_schema,table_name, column_name from
@ -704,6 +711,8 @@ information_schema COLUMNS COLUMN_TYPE
information_schema ROUTINES ROUTINE_DEFINITION
information_schema ROUTINES SQL_MODE
information_schema VIEWS VIEW_DEFINITION
information_schema TRIGGERS ACTION_CONDITION
information_schema TRIGGERS ACTION_STATEMENT
select table_name, column_name, data_type from information_schema.columns
where data_type = 'datetime';
table_name column_name data_type
@ -712,6 +721,7 @@ TABLES UPDATE_TIME datetime
TABLES CHECK_TIME datetime
ROUTINES CREATED datetime
ROUTINES LAST_ALTERED datetime
TRIGGERS CREATED datetime
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
WHERE NOT EXISTS
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS B
@ -758,8 +768,71 @@ delete from mysql.db where user='mysqltest_4';
flush privileges;
SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA;
table_schema count(*)
information_schema 15
information_schema 16
mysql 17
create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row
begin
if new.j > 10 then
set new.j := 10;
end if;
end|
create trigger trg2 before update on t1 for each row
begin
if old.i % 2 = 0 then
set new.j := -1;
end if;
end|
create trigger trg3 after update on t1 for each row
begin
if new.j = -1 then
set @fired:= "Yes";
end if;
end|
show triggers;
Trigger Event Table Statement Timing Created
trg1 INSERT t1
begin
if new.j > 10 then
set new.j := 10;
end if;
end BEFORE NULL
trg2 UPDATE t1
begin
if old.i % 2 = 0 then
set new.j := -1;
end if;
end BEFORE NULL
trg3 UPDATE t1
begin
if new.j = -1 then
set @fired:= "Yes";
end if;
end AFTER NULL
select * from information_schema.triggers;
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED
NULL test trg1 INSERT NULL test t1 0 NULL
begin
if new.j > 10 then
set new.j := 10;
end if;
end ROW BEFORE NULL NULL OLD NEW NULL
NULL test trg2 UPDATE NULL test t1 0 NULL
begin
if old.i % 2 = 0 then
set new.j := -1;
end if;
end ROW BEFORE NULL NULL OLD NEW NULL
NULL test trg3 UPDATE NULL test t1 0 NULL
begin
if new.j = -1 then
set @fired:= "Yes";
end if;
end ROW AFTER NULL NULL OLD NEW NULL
drop trigger trg1;
drop trigger trg2;
drop trigger trg3;
drop table t1;
create database mysqltest;
create table mysqltest.t1 (f1 int, f2 int);
create table mysqltest.t2 (f1 int);

View File

@ -16,11 +16,13 @@ TABLE_PRIVILEGES
COLUMN_PRIVILEGES
TABLE_CONSTRAINTS
KEY_COLUMN_USAGE
TRIGGERS
show tables from INFORMATION_SCHEMA like 'T%';
Tables_in_information_schema (T%)
TABLES
TABLE_PRIVILEGES
TABLE_CONSTRAINTS
TRIGGERS
create database `inf%`;
use `inf%`;
show tables;

View File

@ -237,7 +237,7 @@ select * from t1;
a
10
delete from t1;
drop trigger t1.trg;
drop trigger trg;
insert into t1 values (1);
select * from t1;
a
@ -248,7 +248,7 @@ master-bin.000002 # Query 1 # use `mysqltest1`; delete from t1
master-bin.000002 # Query 1 # use `mysqltest1`; create trigger trg before insert on t1 for each row set new.a= 10
master-bin.000002 # Query 1 # use `mysqltest1`; insert into t1 values (1)
master-bin.000002 # Query 1 # use `mysqltest1`; delete from t1
master-bin.000002 # Query 1 # use `mysqltest1`; drop trigger t1.trg
master-bin.000002 # Query 1 # use `mysqltest1`; drop trigger trg
master-bin.000002 # Query 1 # use `mysqltest1`; insert into t1 values (1)
select * from t1;
a

View File

@ -12,13 +12,13 @@ insert into t1 values (1);
select @a;
@a
1
drop trigger t1.trg;
drop trigger trg;
create trigger trg before insert on t1 for each row set @a:=new.i;
insert into t1 values (123);
select @a;
@a
123
drop trigger t1.trg;
drop trigger trg;
drop table t1;
create table t1 (i int not null, j int);
create trigger trg before insert on t1 for each row
@ -33,7 +33,7 @@ select * from t1|
i j
1 10
2 3
drop trigger t1.trg|
drop trigger trg|
drop table t1|
create table t1 (i int not null primary key);
create trigger trg after insert on t1 for each row
@ -43,7 +43,7 @@ insert into t1 values (2),(3),(4),(5);
select @a;
@a
2:3:4:5
drop trigger t1.trg;
drop trigger trg;
drop table t1;
create table t1 (aid int not null primary key, balance int not null default 0);
insert into t1 values (1, 1000), (2,3000);
@ -65,7 +65,7 @@ Too big change for aid = 2
aid balance
1 1500
2 3000
drop trigger t1.trg|
drop trigger trg|
drop table t1|
create table t1 (i int);
insert into t1 values (1),(2),(3),(4);
@ -76,7 +76,7 @@ update t1 set i=3;
select @total_change;
@total_change
2
drop trigger t1.trg;
drop trigger trg;
drop table t1;
create table t1 (i int);
insert into t1 values (1),(2),(3),(4);
@ -87,7 +87,7 @@ delete from t1 where i <= 3;
select @del_sum;
@del_sum
6
drop trigger t1.trg;
drop trigger trg;
drop table t1;
create table t1 (i int);
insert into t1 values (1),(2),(3),(4);
@ -97,7 +97,7 @@ delete from t1 where i <> 0;
select @del;
@del
1
drop trigger t1.trg;
drop trigger trg;
drop table t1;
create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row
@ -137,9 +137,9 @@ i j
1 20
2 -1
3 20
drop trigger t1.trg1;
drop trigger t1.trg2;
drop trigger t1.trg3;
drop trigger trg1;
drop trigger trg2;
drop trigger trg3;
drop table t1;
create table t1 (id int not null primary key, data int);
create trigger t1_bi before insert on t1 for each row
@ -197,7 +197,7 @@ select * from t2;
event
INSERT INTO t1 id=1 data='one'
INSERT INTO t1 id=2 data='two'
drop trigger t1.t1_ai;
drop trigger t1_ai;
create trigger t1_bi before insert on t1 for each row
begin
if exists (select id from t3 where id=new.fk) then
@ -271,6 +271,7 @@ id copy
3 NULL
drop table t1, t2;
create table t1 (i int);
create table t3 (i int);
create trigger trg before insert on t1 for each row set @a:= old.i;
ERROR HY000: There is no OLD row in on INSERT trigger
create trigger trg before delete on t1 for each row set @a:= new.i;
@ -292,14 +293,19 @@ create trigger trg after insert on t1 for each row set @a:=1;
ERROR HY000: Trigger already exists
create trigger trg2 before insert on t1 for each row set @a:=1;
ERROR HY000: Trigger already exists
drop trigger t1.trg;
drop trigger t1.trg;
create trigger trg before insert on t3 for each row set @a:=1;
ERROR HY000: Trigger already exists
create trigger trg2 before insert on t3 for each row set @a:=1;
drop trigger trg2;
drop trigger trg;
drop trigger trg;
ERROR HY000: Trigger does not exist
create view v1 as select * from t1;
create trigger trg before insert on v1 for each row set @a:=1;
ERROR HY000: 'test.v1' is not BASE TABLE
drop view v1;
drop table t1;
drop table t3;
create temporary table t1 (i int);
create trigger trg before insert on t1 for each row set @a:=1;
ERROR HY000: Trigger's 't1' is view or temporary table
@ -307,7 +313,7 @@ drop table t1;
create table t1 (x1col char);
create trigger tx1 before insert on t1 for each row set new.x1col = 'x';
insert into t1 values ('y');
drop trigger t1.tx1;
drop trigger tx1;
drop table t1;
create table t1 (i int) engine=myisam;
insert into t1 values (1), (2);
@ -318,8 +324,8 @@ delete from t1;
select @del_before, @del_after;
@del_before @del_after
3 3
drop trigger t1.trg1;
drop trigger t1.trg2;
drop trigger trg1;
drop trigger trg2;
drop table t1;
create table t1 (a int);
create trigger trg1 before insert on t1 for each row set new.a= 10;
@ -336,6 +342,15 @@ create table t1 (i int);
create trigger trg1 before insert on t1 for each row set @a:= 1;
drop database mysqltest;
use test;
create database mysqltest;
create table mysqltest.t1 (i int);
create trigger trg1 before insert on mysqltest.t1 for each row set @a:= 1;
ERROR HY000: Trigger in wrong schema
use mysqltest;
create trigger test.trg1 before insert on t1 for each row set @a:= 1;
ERROR HY000: Trigger in wrong schema
drop database mysqltest;
use test;
create table t1 (i int, j int default 10, k int not null, key (k));
create table t2 (i int);
insert into t1 (i, k) values (1, 1);
@ -549,7 +564,7 @@ i k
1 1
2 2
alter table t1 add primary key (i);
drop trigger t1.bi;
drop trigger bi;
insert into t1 values (2, 4) on duplicate key update k= k + 10;
ERROR 42S22: Unknown column 'bt' in 'NEW'
select * from t1;
@ -578,5 +593,5 @@ create trigger t1_bu before update on t1 for each row set new.col1= bug5893();
drop function bug5893;
update t1 set col2 = 4;
ERROR 42000: FUNCTION test.bug5893 does not exist
drop trigger t1.t1_bu;
drop trigger t1_bu;
drop table t1;

View File

@ -1245,7 +1245,7 @@ select * from v1;
s1
select * from t1;
s1
drop trigger t1.t1_bi;
drop trigger t1_bi;
drop view v1;
drop table t1;
create table t1 (s1 tinyint);

View File

@ -507,6 +507,41 @@ flush privileges;
#
SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA;
#
# TRIGGERS table test
#
create table t1 (i int, j int);
delimiter |;
create trigger trg1 before insert on t1 for each row
begin
if new.j > 10 then
set new.j := 10;
end if;
end|
create trigger trg2 before update on t1 for each row
begin
if old.i % 2 = 0 then
set new.j := -1;
end if;
end|
create trigger trg3 after update on t1 for each row
begin
if new.j = -1 then
set @fired:= "Yes";
end if;
end|
delimiter ;|
show triggers;
select * from information_schema.triggers;
drop trigger trg1;
drop trigger trg2;
drop trigger trg3;
drop table t1;
#
# Bug #10964 Information Schema:Authorization check on privilege tables is improper
#

View File

@ -249,7 +249,7 @@ select * from t1;
connection master;
delete from t1;
drop trigger t1.trg;
drop trigger trg;
insert into t1 values (1);
select * from t1;
--replace_column 2 # 5 #

View File

@ -17,13 +17,13 @@ set @a:=0;
select @a;
insert into t1 values (1);
select @a;
drop trigger t1.trg;
drop trigger trg;
# let us test simple trigger reading some values
create trigger trg before insert on t1 for each row set @a:=new.i;
insert into t1 values (123);
select @a;
drop trigger t1.trg;
drop trigger trg;
drop table t1;
@ -40,7 +40,7 @@ end|
insert into t1 (i) values (1)|
insert into t1 (i,j) values (2, 3)|
select * from t1|
drop trigger t1.trg|
drop trigger trg|
drop table t1|
delimiter ;|
@ -52,7 +52,7 @@ create trigger trg after insert on t1 for each row
set @a:="";
insert into t1 values (2),(3),(4),(5);
select @a;
drop trigger t1.trg;
drop trigger trg;
drop table t1;
# PS doesn't work with multi-row statements
@ -75,7 +75,7 @@ set @update_failed:=""|
update t1 set balance=1500|
select @update_failed;
select * from t1|
drop trigger t1.trg|
drop trigger trg|
drop table t1|
delimiter ;|
--enable_ps_protocol
@ -88,7 +88,7 @@ create trigger trg after update on t1 for each row
set @total_change:=0;
update t1 set i=3;
select @total_change;
drop trigger t1.trg;
drop trigger trg;
drop table t1;
# Before delete trigger
@ -100,7 +100,7 @@ create trigger trg before delete on t1 for each row
set @del_sum:= 0;
delete from t1 where i <= 3;
select @del_sum;
drop trigger t1.trg;
drop trigger trg;
drop table t1;
# After delete trigger.
@ -111,7 +111,7 @@ create trigger trg after delete on t1 for each row set @del:= 1;
set @del:= 0;
delete from t1 where i <> 0;
select @del;
drop trigger t1.trg;
drop trigger trg;
drop table t1;
# Several triggers on one table
@ -145,9 +145,9 @@ update t1 set j= 20;
select @fired;
select * from t1;
drop trigger t1.trg1;
drop trigger t1.trg2;
drop trigger t1.trg3;
drop trigger trg1;
drop trigger trg2;
drop trigger trg3;
drop table t1;
@ -212,7 +212,7 @@ create trigger t1_ai after insert on t1 for each row
insert into t1 (id, data) values (1, "one"), (2, "two");
select * from t1;
select * from t2;
drop trigger t1.t1_ai;
drop trigger t1_ai;
# Trigger which uses couple of tables (and partially emulates FK constraint)
delimiter |;
create trigger t1_bi before insert on t1 for each row
@ -282,6 +282,7 @@ drop table t1, t2;
# Test of wrong column specifiers in triggers
#
create table t1 (i int);
create table t3 (i int);
--error 1363
create trigger trg before insert on t1 for each row set @a:= old.i;
@ -301,7 +302,7 @@ create trigger trg before update on t1 for each row set @a:=old.j;
#
# Let us test various trigger creation errors
#
# Also quickly test table namespace (bug#5892/6182)
#
--error 1146
create trigger trg before insert on t2 for each row set @a:=1;
@ -311,10 +312,14 @@ create trigger trg before insert on t1 for each row set @a:=1;
create trigger trg after insert on t1 for each row set @a:=1;
--error 1359
create trigger trg2 before insert on t1 for each row set @a:=1;
drop trigger t1.trg;
--error 1359
create trigger trg before insert on t3 for each row set @a:=1;
create trigger trg2 before insert on t3 for each row set @a:=1;
drop trigger trg2;
drop trigger trg;
--error 1360
drop trigger t1.trg;
drop trigger trg;
create view v1 as select * from t1;
--error 1347
@ -322,6 +327,7 @@ create trigger trg before insert on v1 for each row set @a:=1;
drop view v1;
drop table t1;
drop table t3;
create temporary table t1 (i int);
--error 1361
@ -339,7 +345,7 @@ drop table t1;
create table t1 (x1col char);
create trigger tx1 before insert on t1 for each row set new.x1col = 'x';
insert into t1 values ('y');
drop trigger t1.tx1;
drop trigger tx1;
drop table t1;
#
@ -355,8 +361,8 @@ create trigger trg2 after delete on t1 for each row set @del_after:= @del_after
set @del_before:=0, @del_after:= 0;
delete from t1;
select @del_before, @del_after;
drop trigger t1.trg1;
drop trigger t1.trg2;
drop trigger trg1;
drop trigger trg2;
drop table t1;
# Test for bug #5859 "DROP TABLE does not drop triggers". Trigger should not
@ -378,6 +384,19 @@ create trigger trg1 before insert on t1 for each row set @a:= 1;
drop database mysqltest;
use test;
# Test for bug #8791
# "Triggers: Allowed to create triggers on a subject table in a different DB".
create database mysqltest;
create table mysqltest.t1 (i int);
--error 1429
create trigger trg1 before insert on mysqltest.t1 for each row set @a:= 1;
use mysqltest;
--error 1429
create trigger test.trg1 before insert on t1 for each row set @a:= 1;
drop database mysqltest;
use test;
# Test for bug #5860 "Multi-table UPDATE does not activate update triggers"
# We will also test how delete triggers wor for multi-table DELETE.
create table t1 (i int, j int default 10, k int not null, key (k));
@ -559,7 +578,7 @@ select * from t1;
# To test properly code-paths different from those that are used
# in ordinary INSERT we need to drop "before insert" trigger.
alter table t1 add primary key (i);
drop trigger t1.bi;
drop trigger bi;
--error 1054
insert into t1 values (2, 4) on duplicate key update k= k + 10;
select * from t1;
@ -589,5 +608,5 @@ drop function bug5893;
--error 1305
update t1 set col2 = 4;
# This should not crash server too.
drop trigger t1.t1_bu;
drop trigger t1_bu;
drop table t1;

View File

@ -1182,7 +1182,7 @@ create view v1 as select * from t1 where s1 <> 127 with check option;
insert into v1 values (0);
select * from v1;
select * from t1;
drop trigger t1.t1_bi;
drop trigger t1_bi;
drop view v1;
drop table t1;