Commit 7dafc733 authored by unknown's avatar unknown
Browse files

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0

into  sanja.is.com.ua:/home/bell/mysql/bk/work-trigger-5.0


mysql-test/r/information_schema.result:
  Auto merged
mysql-test/t/mysqldump.test:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
mysql-test/r/mysqldump.result:
  merge
sql/sql_trigger.cc:
  merge
parents c7908e78 675c4bb4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -49,5 +49,6 @@ enum options_client
#ifdef HAVE_NDBCLUSTER_DB
  OPT_NDBCLUSTER, OPT_NDB_CONNECTSTRING,
#endif
  OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE
  OPT_IGNORE_TABLE, OPT_INSERT_IGNORE, OPT_SHOW_WARNINGS, OPT_DROP_DATABASE,
  OPT_TRIGGER
};
+21 −14
Original line number Diff line number Diff line
@@ -372,7 +372,7 @@ static struct my_option my_long_options[] =
   (gptr*) &path, (gptr*) &path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
  {"tables", OPT_TABLES, "Overrides option --databases (-B).",
   0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
   {"triggers", '/0', "Dump triggers for each dumped table",
   {"triggers", OPT_TRIGGER, "Dump triggers for each dumped table",
     (gptr*) &opt_dump_triggers, (gptr*) &opt_dump_triggers, 0, GET_BOOL,
     NO_ARG, 1, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
@@ -1296,10 +1296,11 @@ static uint get_table_structure(char *table, char *db)
        row= mysql_fetch_row(tableRes);

        if (opt_drop)
          fprintf(sql_file, "DROP VIEW IF EXISTS %s;\n",opt_quoted_table);
          fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n",
                  opt_quoted_table);

        /* Print CREATE statement but remove TEMPORARY */
        fprintf(sql_file, "CREATE %s;\n", row[1]+17);
        fprintf(sql_file, "/*!50001 CREATE %s*/;\n", row[1]+17);
        check_io(sql_file);

        mysql_free_result(tableRes);
@@ -1335,19 +1336,23 @@ static uint get_table_structure(char *table, char *db)
          DBUG_RETURN(0);
        }
        if (mysql_num_rows(tableRes))
          fprintf(sql_file, "\nDELIMITER //;\n");
          fprintf(sql_file, "\n/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;\n\
DELIMITER //;\n");
        while ((row=mysql_fetch_row(tableRes)))
        {
          fprintf(sql_file, "CREATE TRIGGER %s %s %s ON %s\n"
                  "FOR EACH ROW%s//\n\n",
                  quote_name(row[0], name_buff, 0),
                  row[4],
                  row[1],
          fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=\"%s\"*/ //\n\
/*!50003 CREATE TRIGGER %s %s %s ON %s FOR EACH ROW%s*/ //\n\n",
                  row[6], /* sql_mode */
                  quote_name(row[0], name_buff, 0), /* Trigger */
                  row[4], /* Timing */
                  row[1], /* Event */
                  result_table,
                  row[3]);
                  row[3] /* Statement */);
        }
        if (mysql_num_rows(tableRes))
          fprintf(sql_file, "DELIMITER ;//");
          fprintf(sql_file,
                  "DELIMITER ;//\n\
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;");
        mysql_free_result(tableRes);
      }
    }
@@ -2957,13 +2962,15 @@ static my_bool get_view_structure(char *table, char* db)
  }
  if (opt_drop)
  {
    fprintf(sql_file, "DROP TABLE IF EXISTS %s;\n", opt_quoted_table);
    fprintf(sql_file, "DROP VIEW IF EXISTS %s;\n", opt_quoted_table);
    fprintf(sql_file, "/*!50001 DROP TABLE IF EXISTS %s*/;\n",
            opt_quoted_table);
    fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n",
            opt_quoted_table);
    check_io(sql_file);
  }

  row= mysql_fetch_row(table_res);
  fprintf(sql_file, "%s;\n", row[1]);
  fprintf(sql_file, "/*!50001 %s*/;\n", row[1]);
  check_io(sql_file);
  mysql_free_result(table_res);

+9 −8
Original line number Diff line number Diff line
@@ -713,6 +713,7 @@ information_schema ROUTINES SQL_MODE
information_schema	VIEWS	VIEW_DEFINITION
information_schema	TRIGGERS	ACTION_CONDITION
information_schema	TRIGGERS	ACTION_STATEMENT
information_schema	TRIGGERS	SQL_MODE
select table_name, column_name, data_type from information_schema.columns
where data_type = 'datetime';
table_name	column_name	data_type
@@ -790,7 +791,7 @@ set @fired:= "Yes";
end if;
end|
show triggers;
Trigger	Event	Table	Statement	Timing	Created
Trigger	Event	Table	Statement	Timing	Created	sql_mode
trg1	INSERT	t1	
begin
if new.j > 10 then
@@ -810,7 +811,7 @@ 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
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	SQL_MODE
NULL	test	trg1	INSERT	NULL	test	t1	0	NULL	
begin
if new.j > 10 then
+46 −16
Original line number Diff line number Diff line
@@ -1685,6 +1685,7 @@ end|
create trigger trg2 before update on t1 for each row begin
if old.a % 2 = 0 then set new.b := 12; end if;
end|
set sql_mode="traditional"|
create trigger trg3 after update on t1 for each row
begin
if new.a = -1 then
@@ -1697,8 +1698,9 @@ if new.a > 10 then
set @fired:= "No";
end if;
end|
set sql_mode=default|
show triggers like "t1";
Trigger	Event	Table	Statement	Timing	Created
Trigger	Event	Table	Statement	Timing	Created	sql_mode
trg1	INSERT	t1	
begin
if new.a > 10 then
@@ -1714,7 +1716,7 @@ begin
if new.a = -1 then
set @fired:= "Yes";
end if;
end	AFTER	0000-00-00 00:00:00
end	AFTER	0000-00-00 00:00:00	STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
INSERT INTO t1 (a) VALUES (1),(2),(3),(22);
update t1 set a = 4 where a=3;

@@ -1736,30 +1738,32 @@ CREATE TABLE `t1` (
  `b` bigint(20) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
DELIMITER //;
CREATE TRIGGER `trg1` BEFORE INSERT ON `t1`
FOR EACH ROW
/*!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//
end*/ //

CREATE TRIGGER `trg2` BEFORE UPDATE ON `t1`
FOR EACH ROW begin
/*!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//
end*/ //

CREATE TRIGGER `trg3` AFTER UPDATE ON `t1`
FOR EACH ROW
/*!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//
end*/ //

DELIMITER ;//
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;

/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
LOCK TABLES `t1` WRITE;
@@ -1771,16 +1775,18 @@ CREATE TABLE `t2` (
  `a` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
DELIMITER //;
CREATE TRIGGER `trg4` BEFORE INSERT ON `t2`
FOR EACH ROW
/*!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//
end*/ //

DELIMITER ;//
/*!50003 SET SESSION SQL_MODE=@OLD_SQL_MODE*/;

/*!40000 ALTER TABLE `t2` DISABLE KEYS */;
LOCK TABLES `t2` WRITE;
@@ -1844,4 +1850,28 @@ show tables;
Tables_in_test
t1
t2
show triggers;
Trigger	Event	Table	Statement	Timing	Created	sql_mode
trg1	INSERT	t1	
begin
if new.a > 10 then
set new.a := 10;
set new.a := 11;
end if;
end	BEFORE	#	
trg2	UPDATE	t1	 begin
if old.a % 2 = 0 then set new.b := 12; end if;
end	BEFORE	#	
trg3	UPDATE	t1	
begin
if new.a = -1 then
set @fired:= "Yes";
end if;
end	AFTER	#	STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
trg4	INSERT	t2	
begin
if new.a > 10 then
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;
+4 −4
Original line number Diff line number Diff line
@@ -2658,20 +2658,20 @@ call avg ()|
drop procedure avg|
drop procedure if exists bug6129|
set @old_mode= @@sql_mode;
set @@sql_mode= "";
set @@sql_mode= "ERROR_FOR_DIVISION_BY_ZERO";
create procedure bug6129()
select @@sql_mode|
call bug6129()|
@@sql_mode

ERROR_FOR_DIVISION_BY_ZERO
set @@sql_mode= "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO"|
call bug6129()|
@@sql_mode
NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
ERROR_FOR_DIVISION_BY_ZERO
set @@sql_mode= "NO_ZERO_IN_DATE"|
call bug6129()|
@@sql_mode
NO_ZERO_IN_DATE
ERROR_FOR_DIVISION_BY_ZERO
set @@sql_mode=@old_mode;
drop procedure bug6129|
drop procedure if exists bug9856|
Loading