mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.0
into radha.local:/Users/patg/mysql-build/mysql-5.0.bug12597
This commit is contained in:
@ -1738,61 +1738,61 @@ CREATE TABLE `t1` (
|
||||
`b` bigint(20) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
|
||||
DELIMITER //;
|
||||
/*!50003 SET SESSION SQL_MODE=""*/ //
|
||||
/*!50003 CREATE TRIGGER `trg1` BEFORE INSERT ON `t1` FOR EACH ROW
|
||||
begin
|
||||
if new.a > 10 then
|
||||
set new.a := 10;
|
||||
set new.a := 11;
|
||||
end if;
|
||||
end*/ //
|
||||
|
||||
/*!50003 SET SESSION SQL_MODE=""*/ //
|
||||
/*!50003 CREATE TRIGGER `trg2` BEFORE UPDATE ON `t1` FOR EACH ROW begin
|
||||
if old.a % 2 = 0 then set new.b := 12; end if;
|
||||
end*/ //
|
||||
|
||||
/*!50003 SET SESSION SQL_MODE="STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER"*/ //
|
||||
/*!50003 CREATE TRIGGER `trg3` AFTER UPDATE ON `t1` FOR EACH ROW
|
||||
begin
|
||||
if new.a = -1 then
|
||||
set @fired:= "Yes";
|
||||
end if;
|
||||
end*/ //
|
||||
|
||||
DELIMITER ;//
|
||||
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;
|
||||
|
||||
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||
LOCK TABLES `t1` WRITE;
|
||||
INSERT INTO `t1` VALUES (1,NULL),(2,NULL),(4,NULL),(11,NULL);
|
||||
UNLOCK TABLES;
|
||||
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||
DROP TABLE IF EXISTS `t2`;
|
||||
|
||||
/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
|
||||
DELIMITER //;
|
||||
/*!50003 SET SESSION SQL_MODE="" */ //
|
||||
/*!50003 CREATE TRIGGER `trg1` BEFORE INSERT ON `t1` FOR EACH ROW
|
||||
begin
|
||||
if new.a > 10 then
|
||||
set new.a := 10;
|
||||
set new.a := 11;
|
||||
end if;
|
||||
end */ //
|
||||
|
||||
/*!50003 SET SESSION SQL_MODE="" */ //
|
||||
/*!50003 CREATE TRIGGER `trg2` BEFORE UPDATE ON `t1` FOR EACH ROW begin
|
||||
if old.a % 2 = 0 then set new.b := 12; end if;
|
||||
end */ //
|
||||
|
||||
/*!50003 SET SESSION SQL_MODE="STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER" */ //
|
||||
/*!50003 CREATE TRIGGER `trg3` AFTER UPDATE ON `t1` FOR EACH ROW
|
||||
begin
|
||||
if new.a = -1 then
|
||||
set @fired:= "Yes";
|
||||
end if;
|
||||
end */ //
|
||||
|
||||
DELIMITER ;//
|
||||
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;DROP TABLE IF EXISTS `t2`;
|
||||
CREATE TABLE `t2` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
|
||||
DELIMITER //;
|
||||
/*!50003 SET SESSION SQL_MODE="STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER"*/ //
|
||||
/*!50003 CREATE TRIGGER `trg4` BEFORE INSERT ON `t2` FOR EACH ROW
|
||||
begin
|
||||
if new.a > 10 then
|
||||
set @fired:= "No";
|
||||
end if;
|
||||
end*/ //
|
||||
|
||||
DELIMITER ;//
|
||||
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;
|
||||
|
||||
/*!40000 ALTER TABLE `t2` DISABLE KEYS */;
|
||||
LOCK TABLES `t2` WRITE;
|
||||
UNLOCK TABLES;
|
||||
/*!40000 ALTER TABLE `t2` ENABLE KEYS */;
|
||||
|
||||
/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
|
||||
DELIMITER //;
|
||||
/*!50003 SET SESSION SQL_MODE="STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER" */ //
|
||||
/*!50003 CREATE TRIGGER `trg4` BEFORE INSERT ON `t2` FOR EACH ROW
|
||||
begin
|
||||
if new.a > 10 then
|
||||
set @fired:= "No";
|
||||
end if;
|
||||
end */ //
|
||||
|
||||
DELIMITER ;//
|
||||
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
@ -1875,3 +1875,34 @@ set @fired:= "No";
|
||||
end if;
|
||||
end BEFORE # STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||
DROP TABLE t1, t2;
|
||||
DROP TABLE IF EXISTS `test1`;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test1'
|
||||
CREATE TABLE `test1` (
|
||||
`a1` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
DROP TABLE IF EXISTS `test2`;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test2'
|
||||
CREATE TABLE `test2` (
|
||||
`a2` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
CREATE TRIGGER `testref` BEFORE INSERT ON `test1` FOR EACH ROW BEGIN
|
||||
INSERT INTO test2 SET a2 = NEW.a1; END //
|
||||
INSERT INTO `test1` VALUES (1);
|
||||
SELECT * FROM `test2`;
|
||||
a2
|
||||
1
|
||||
SHOW TRIGGERS;
|
||||
Trigger Event Table Statement Timing Created sql_mode
|
||||
testref INSERT test1 BEGIN
|
||||
INSERT INTO test2 SET a2 = NEW.a1; END BEFORE NULL
|
||||
SELECT * FROM `test1`;
|
||||
a1
|
||||
1
|
||||
SELECT * FROM `test2`;
|
||||
a2
|
||||
1
|
||||
DROP TRIGGER testref;
|
||||
DROP TABLE test1;
|
||||
DROP TABLE test2;
|
||||
|
@ -761,3 +761,38 @@ show tables;
|
||||
--replace_column 6 #
|
||||
show triggers;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
# Test of fix to BUG 12597
|
||||
DROP TABLE IF EXISTS `test1`;
|
||||
CREATE TABLE `test1` (
|
||||
`a1` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
DROP TABLE IF EXISTS `test2`;
|
||||
CREATE TABLE `test2` (
|
||||
`a2` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
DELIMITER //;
|
||||
CREATE TRIGGER `testref` BEFORE INSERT ON `test1` FOR EACH ROW BEGIN
|
||||
INSERT INTO test2 SET a2 = NEW.a1; END //
|
||||
DELIMITER ;//
|
||||
|
||||
INSERT INTO `test1` VALUES (1);
|
||||
SELECT * FROM `test2`;
|
||||
|
||||
# dump
|
||||
--exec $MYSQL_DUMP --skip-comments --databases test > var/tmp/mysqldump.sql
|
||||
|
||||
#DROP TRIGGER testref;
|
||||
#DROP TABLE test1;
|
||||
#DROP TABLE test2;
|
||||
# restore
|
||||
--exec $MYSQL test < var/tmp/mysqldump.sql
|
||||
SHOW TRIGGERS;
|
||||
SELECT * FROM `test1`;
|
||||
SELECT * FROM `test2`;
|
||||
|
||||
DROP TRIGGER testref;
|
||||
DROP TABLE test1;
|
||||
DROP TABLE test2;
|
||||
|
Reference in New Issue
Block a user