List:Commits« Previous MessageNext Message »
From:Alexander Nozdrin Date:January 10 2006 11:07pm
Subject:bk commit into 5.0 tree (anozdrin:1.2031) BUG#15110
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of alik. When alik does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2031 06/01/11 02:07:40 anozdrin@stripped +17 -0
  Fix for BUG#15110: mysqldump --triggers: does not include DEFINER clause
  
  There are two main idea of this fix:
    - introduce a common function for server and client to split user value
      (<user name>@<host name>) into user name and host name parts;
    - dump DEFINER clause in correct format in mysqldump.

  sql-common/my_user.c
    1.1 06/01/11 02:07:35 anozdrin@stripped +57 -0
    A new file for parse_user() implementation.

  include/my_user.h
    1.1 06/01/11 02:07:35 anozdrin@stripped +35 -0
    A header file for parse_user().

  sql/sql_trigger.cc
    1.41 06/01/11 02:07:35 anozdrin@stripped +1 -1
    Use constant for max user length.

  sql/sql_show.cc
    1.304 06/01/11 02:07:35 anozdrin@stripped +3 -3
    Use constant for max user length.

  sql-common/my_user.c
    1.0 06/01/11 02:07:35 anozdrin@stripped +0 -0
    BitKeeper file /home/alik/MySQL/devel/5.0-bug15110/sql-common/my_user.c

  include/my_user.h
    1.0 06/01/11 02:07:35 anozdrin@stripped +0 -0
    BitKeeper file /home/alik/MySQL/devel/5.0-bug15110/include/my_user.h

  sql/sql_parse.cc
    1.521 06/01/11 02:07:34 anozdrin@stripped +2 -2
    Use constant for max user length.

  sql/sql_acl.cc
    1.192 06/01/11 02:07:34 anozdrin@stripped +2 -2
    Use constant for max user length.

  sql/sp_head.cc
    1.206 06/01/11 02:07:34 anozdrin@stripped +12 -18
    Use common function to parse user value.

  sql/sp.cc
    1.104 06/01/11 02:07:34 anozdrin@stripped +2 -2
    Use constant for max user length.

  sql/Makefile.am
    1.114 06/01/11 02:07:34 anozdrin@stripped +3 -1
    Add my_user.c

  sql-common/Makefile.am
    1.3 06/01/11 02:07:34 anozdrin@stripped +1 -1
    Add my_user.c

  mysql-test/r/mysqldump.result
    1.86 06/01/11 02:07:34 anozdrin@stripped +6 -6
    Update result file.

  libmysqld/Makefile.am
    1.67 06/01/11 02:07:34 anozdrin@stripped +1 -1
    Add my_user.c

  include/mysql_com.h
    1.103 06/01/11 02:07:34 anozdrin@stripped +8 -0
    Introduce a constant for max user length.

  include/Makefile.am
    1.56 06/01/11 02:07:34 anozdrin@stripped +2 -1
    Add my_user.c

  client/mysqldump.c
    1.218 06/01/11 02:07:34 anozdrin@stripped +32 -3
    Fix for BUG#15110(mysqldump --triggers: does not include DEFINER clause)

  client/Makefile.am
    1.53 06/01/11 02:07:34 anozdrin@stripped +5 -2
    Use my_user.c in linking of mysqldump executable.

  BitKeeper/etc/ignore
    1.213 06/01/11 02:05:07 anozdrin@stripped +3 -0
    added client/my_user.c libmysqld/my_user.c sql/my_user.c

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	anozdrin
# Host:	booka.home
# Root:	/home/alik/MySQL/devel/5.0-bug15110

--- 1.52/client/Makefile.am	2005-11-09 12:26:52 +03:00
+++ 1.53/client/Makefile.am	2006-01-11 02:07:34 +03:00
@@ -46,7 +46,7 @@
 mysqltestmanagerc_SOURCES=      mysqlmanagerc.c $(yassl_dummy_link_fix)
 mysqlcheck_SOURCES=             mysqlcheck.c $(yassl_dummy_link_fix)
 mysqlshow_SOURCES=              mysqlshow.c $(yassl_dummy_link_fix)
-mysqldump_SOURCES=              mysqldump.c $(yassl_dummy_link_fix)
+mysqldump_SOURCES=              mysqldump.c my_user.c $(yassl_dummy_link_fix)
 mysqlimport_SOURCES=            mysqlimport.c $(yassl_dummy_link_fix)
 sql_src=log_event.h mysql_priv.h log_event.cc my_decimal.h my_decimal.cc
 strings_src=decimal.c
@@ -62,7 +62,10 @@
         for f in $(strings_src) ; do \
           rm -f $(srcdir)/$$f; \
           @LN_CP_F@ $(top_srcdir)/strings/$$f $$f; \
-         done;
+         done; \
+         rm -f $(srcdir)/my_user.c; \
+         @LN_CP_F@ $(top_srcdir)/sql-common/my_user.c my_user.c;
+	
 
 # Don't update the files from bitkeeper
 %::SCCS/s.%

--- 1.217/client/mysqldump.c	2005-12-04 21:55:14 +03:00
+++ 1.218/client/mysqldump.c	2006-01-11 02:07:34 +03:00
@@ -41,6 +41,7 @@
 
 #include <my_global.h>
 #include <my_sys.h>
+#include <my_user.h>
 #include <m_string.h>
 #include <m_ctype.h>
 #include <hash.h>
@@ -1840,9 +1841,37 @@
 DELIMITER ;;\n");
   while ((row= mysql_fetch_row(result)))
   {
-    fprintf(sql_file, "/*!50003 SET SESSION SQL_MODE=\"%s\" */;;\n\
-/*!50003 CREATE TRIGGER %s %s %s ON %s FOR EACH ROW%s%s */;;\n\n",
-            row[6], /* sql_mode */
+    fprintf(sql_file,
+            "/*!50003 SET SESSION SQL_MODE=\"%s\" */;;\n"
+            "/*!50003 CREATE */ ",
+            row[6] /* sql_mode */);
+
+    if (mysql_num_fields(result) > 7)
+    {
+      /*
+        mysqldump can be run against the server, that does not support definer
+        in triggers (there is no DEFINER column in SHOW TRIGGERS output). So,
+        we should check if we have this column before accessing it.
+      */
+
+      uint       user_name_len;
+      char       user_name_str[USERNAME_LENGTH + 1];
+      char       quoted_user_name_str[USERNAME_LENGTH * 2 + 3];
+      uint       host_name_len;
+      char       host_name_str[HOSTNAME_LENGTH + 1];
+      char       quoted_host_name_str[HOSTNAME_LENGTH * 2 + 3];
+    
+      parse_user(row[7], strlen(row[7]), user_name_str, &user_name_len,
+                 host_name_str, &host_name_len);
+
+      fprintf(sql_file,
+              "/*!50017 DEFINER=%s@%s */ ",
+              quote_name(user_name_str, quoted_user_name_str, FALSE),
+              quote_name(host_name_str, quoted_host_name_str, FALSE));
+    }
+
+    fprintf(sql_file,
+            "/*!50003 TRIGGER %s %s %s ON %s FOR EACH ROW%s%s */;;\n\n",
             quote_name(row[0], name_buff, 0), /* Trigger */
             row[4], /* Timing */
             row[1], /* Event */

--- 1.55/include/Makefile.am	2006-01-09 12:00:58 +03:00
+++ 1.56/include/Makefile.am	2006-01-11 02:07:34 +03:00
@@ -30,7 +30,8 @@
 			my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
 			my_aes.h my_tree.h hash.h thr_alarm.h \
 			thr_lock.h t_ctype.h violite.h md5.h base64.h \
-			mysql_version.h.in my_handler.h my_time.h decimal.h
+			mysql_version.h.in my_handler.h my_time.h decimal.h \
+			my_user.h
 
 # mysql_version.h are generated
 CLEANFILES =            mysql_version.h my_config.h readline openssl

--- 1.102/include/mysql_com.h	2005-10-12 01:58:17 +04:00
+++ 1.103/include/mysql_com.h	2006-01-11 02:07:34 +03:00
@@ -27,6 +27,14 @@
 #define SERVER_VERSION_LENGTH 60
 #define SQLSTATE_LENGTH 5
 
+/*
+  USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
+  username and hostname parts of the user identifier with trailing zero in
+  MySQL standard format:
+  user_name_part@host_name_part\0
+*/
+#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
+
 #define LOCAL_HOST	"localhost"
 #define LOCAL_HOST_NAMEDPIPE "."
 

--- 1.113/sql/Makefile.am	2005-11-04 04:08:07 +03:00
+++ 1.114/sql/Makefile.am	2006-01-11 02:07:34 +03:00
@@ -97,7 +97,7 @@
 			stacktrace.c repl_failsafe.h repl_failsafe.cc \
 			sql_olap.cc sql_view.cc \
 			gstream.cc spatial.cc sql_help.cc sql_cursor.cc \
-                        tztime.cc my_time.c my_decimal.cc\
+			tztime.cc my_time.c my_user.c my_decimal.cc\
 			sp_head.cc sp_pcontext.cc  sp_rcontext.cc sp.cc \
 			sp_cache.cc parse_file.cc sql_trigger.cc \
 			examples/ha_example.cc ha_archive.cc \
@@ -133,6 +133,8 @@
 	@LN_CP_F@ $(top_srcdir)/sql-common/client.c client.c
 	rm -f my_time.c
 	@LN_CP_F@ $(top_srcdir)/sql-common/my_time.c my_time.c
+	rm -f my_user.c
+	@LN_CP_F@ $(top_srcdir)/sql-common/my_user.c my_user.c
 
 mysql_tzinfo_to_sql.o:	$(mysql_tzinfo_to_sql_SOURCES)
 			$(CXXCOMPILE) -c $(INCLUDES) -DTZINFO2SQL $<

--- 1.191/sql/sql_acl.cc	2006-01-10 19:22:35 +03:00
+++ 1.192/sql/sql_acl.cc	2006-01-11 02:07:34 +03:00
@@ -2490,7 +2490,7 @@
 			       ulong rights, ulong col_rights,
 			       bool revoke_grant)
 {
-  char grantor[HOSTNAME_LENGTH+USERNAME_LENGTH+2];
+  char grantor[USER_HOST_BUFF_SIZE];
   int old_row_exists = 1;
   int error=0;
   ulong store_table_rights, store_col_rights;
@@ -2608,7 +2608,7 @@
 			      const char *db, const char *routine_name,
 			      bool is_proc, ulong rights, bool revoke_grant)
 {
-  char grantor[HOSTNAME_LENGTH+USERNAME_LENGTH+2];
+  char grantor[USER_HOST_BUFF_SIZE];
   int old_row_exists= 1;
   int error=0;
   ulong store_proc_rights;

--- 1.520/sql/sql_parse.cc	2006-01-06 01:49:24 +03:00
+++ 1.521/sql/sql_parse.cc	2006-01-11 02:07:34 +03:00
@@ -214,7 +214,7 @@
 {
   int return_val= 0;
   uint temp_len, user_len;
-  char temp_user[USERNAME_LENGTH+HOSTNAME_LENGTH+2];
+  char temp_user[USER_HOST_BUFF_SIZE];
   struct  user_conn *uc;
 
   DBUG_ASSERT(user != 0);
@@ -743,7 +743,7 @@
   {
     USER_CONN *uc;
     uint temp_len=lu->user.length+lu->host.length+2;
-    char temp_user[USERNAME_LENGTH+HOSTNAME_LENGTH+2];
+    char temp_user[USER_HOST_BUFF_SIZE];
 
     memcpy(temp_user,lu->user.str,lu->user.length);
     memcpy(temp_user+lu->user.length+1,lu->host.str,lu->host.length);

--- 1.303/sql/sql_show.cc	2006-01-03 13:25:13 +03:00
+++ 1.304/sql/sql_show.cc	2006-01-11 02:07:35 +03:00
@@ -2887,7 +2887,7 @@
   int res= 0;
   TABLE *table= tables->table;
   bool full_access;
-  char definer[HOSTNAME_LENGTH+USERNAME_LENGTH+2];
+  char definer[USER_HOST_BUFF_SIZE];
   Open_tables_state open_tables_state_backup;
   DBUG_ENTER("fill_schema_proc");
 
@@ -3029,7 +3029,7 @@
 {
   CHARSET_INFO *cs= system_charset_info;
   DBUG_ENTER("get_schema_views_record");
-  char definer[HOSTNAME_LENGTH + USERNAME_LENGTH + 2];
+  char definer[USER_HOST_BUFF_SIZE];
   uint definer_len;
 
   if (tables->view)
@@ -3213,7 +3213,7 @@
         LEX_STRING trigger_name;
         LEX_STRING trigger_stmt;
         ulong sql_mode;
-        char definer_holder[HOSTNAME_LENGTH + USERNAME_LENGTH + 2];
+        char definer_holder[USER_HOST_BUFF_SIZE];
         LEX_STRING definer_buffer;
         definer_buffer.str= definer_holder;
         if (triggers->get_trigger_info(thd, (enum trg_event_type) event,
--- New file ---
+++ include/my_user.h	06/01/11 02:07:35
/* Copyright (C) 2005 MySQL AB

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

/*
  This is a header for libraries containing functions used in both server and
  only some of clients (but not in libmysql)...
*/

#ifndef _my_user_h_
#define _my_user_h_

#include <my_global.h>

C_MODE_START

void parse_user(const char *user_id_str, uint user_id_len,
                char *user_name_str, uint *user_name_len,
                char *host_name_str, uint *host_name_len);

C_MODE_END

#endif /* _my_user_h_ */

--- New file ---
+++ sql-common/my_user.c	06/01/11 02:07:35
/* Copyright (C) 2005 MySQL AB

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#include <my_user.h>
#include <m_string.h>


/*
  Parse user value to user name and host name parts.

  SYNOPSIS
    user_id_str     [IN]  User value string (the source).
    user_id_len     [IN]  Length of the user value.
    user_name_str   [OUT] Buffer to store user name part.
                          Must be not less than USERNAME_LENGTH + 1.
    user_name_len   [OUT] A place to store length of the user name part.
    host_name_str   [OUT] Buffer to store host name part.
                          Must be not less than HOSTNAME_LENGTH + 1.
    host_name_len   [OUT] A place to store length of the host name part.
*/

void parse_user(const char *user_id_str, uint user_id_len,
                char *user_name_str, uint *user_name_len,
                char *host_name_str, uint *host_name_len)
{
  char *p= strrchr(user_id_str, '@');

  if (!p)
  {
    *user_name_len= 0;
    *host_name_len= 0;
  }
  else
  {
    *user_name_len= p - user_id_str;
    *host_name_len= user_id_len - *user_name_len - 1;

    memcpy(user_name_str, user_id_str, *user_name_len);
    memcpy(host_name_str, p + 1, *host_name_len);
  }

  user_name_str[*user_name_len]= 0;
  host_name_str[*host_name_len]= 0;
}


--- 1.40/sql/sql_trigger.cc	2006-01-06 13:48:09 +03:00
+++ 1.41/sql/sql_trigger.cc	2006-01-11 02:07:35 +03:00
@@ -317,7 +317,7 @@
   LEX_STRING dir, file, trigname_file;
   LEX_STRING *trg_def, *name;
   ulonglong *trg_sql_mode;
-  char trg_definer_holder[HOSTNAME_LENGTH + USERNAME_LENGTH + 2];
+  char trg_definer_holder[USER_HOST_BUFF_SIZE];
   LEX_STRING *trg_definer;
   Item_trigger_field *trg_field;
   struct st_trigname trigname;

--- 1.2/sql-common/Makefile.am	2004-06-24 19:08:31 +04:00
+++ 1.3/sql-common/Makefile.am	2006-01-11 02:07:34 +03:00
@@ -15,7 +15,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 ## Process this file with automake to create Makefile.in
-EXTRA_DIST = client.c pack.c my_time.c
+EXTRA_DIST = client.c pack.c my_time.c my_user.c
 
 # Don't update the files from bitkeeper
 %::SCCS/s.%

--- 1.66/libmysqld/Makefile.am	2005-11-24 19:17:30 +03:00
+++ 1.67/libmysqld/Makefile.am	2006-01-11 02:07:34 +03:00
@@ -63,7 +63,7 @@
 	spatial.cc gstream.cc sql_help.cc tztime.cc sql_cursor.cc \
 	sp_head.cc sp_pcontext.cc sp.cc sp_cache.cc sp_rcontext.cc \
 	parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
-	ha_blackhole.cc ha_archive.cc
+	ha_blackhole.cc ha_archive.cc my_user.c
 
 libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources)
 libmysqld_a_SOURCES=

--- 1.103/sql/sp.cc	2006-01-06 01:49:23 +03:00
+++ 1.104/sql/sp.cc	2006-01-11 02:07:34 +03:00
@@ -480,7 +480,7 @@
 {
   int ret;
   TABLE *table;
-  char definer[HOSTNAME_LENGTH+USERNAME_LENGTH+2];
+  char definer[USER_HOST_BUFF_SIZE];
   char olddb[128];
   bool dbchanged;
   DBUG_ENTER("db_create_routine");
@@ -940,7 +940,7 @@
     ulong level;
     sp_head *new_sp;
     const char *returns= "";
-    char definer[HOSTNAME_LENGTH+USERNAME_LENGTH+2];
+    char definer[USER_HOST_BUFF_SIZE];
     String retstr(64);
 
     DBUG_PRINT("info", ("found: 0x%lx", (ulong)sp));

--- 1.205/sql/sp_head.cc	2006-01-06 16:30:05 +03:00
+++ 1.206/sql/sp_head.cc	2006-01-11 02:07:34 +03:00
@@ -31,6 +31,8 @@
 #define SP_STMT_PRINT_MAXLEN 40
 
 
+#include <my_user.h>
+
 Item_result
 sp_map_result_type(enum enum_field_types type)
 {
@@ -1752,29 +1754,21 @@
 
 
 void
-
 sp_head::set_definer(const char *definer, uint definerlen)
 {
-  const char *p= strrchr(definer, '@');
+  uint user_name_len;
+  char user_name_str[USERNAME_LENGTH + 1];
+  uint host_name_len;
+  char host_name_str[HOSTNAME_LENGTH + 1];
 
-  if (!p)
-  {
-    m_definer_user.str= (char*) "";
-    m_definer_user.length= 0;
-    m_definer_host.str= (char*) "";
-    m_definer_host.length= 0;
-  }
-  else
-  {
-    const uint user_name_len= p - definer;
-    const uint host_name_len= definerlen - user_name_len - 1;
+  parse_user(definer, definerlen, user_name_str, &user_name_len,
+             host_name_str, &host_name_len);
 
-    m_definer_user.str= strmake_root(mem_root, definer, user_name_len);
-    m_definer_user.length= user_name_len;
+  m_definer_user.str= strmake_root(mem_root, user_name_str, user_name_len);
+  m_definer_user.length= user_name_len;
 
-    m_definer_host.str= strmake_root(mem_root, p + 1, host_name_len);
-    m_definer_host.length= host_name_len;
-  }
+  m_definer_host.str= strmake_root(mem_root, host_name_str, host_name_len);
+  m_definer_host.length= host_name_len;
 }
 
 

--- 1.85/mysql-test/r/mysqldump.result	2005-12-02 02:10:30 +03:00
+++ 1.86/mysql-test/r/mysqldump.result	2006-01-11 02:07:34 +03:00
@@ -1986,7 +1986,7 @@
 /*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
 DELIMITER ;;
 /*!50003 SET SESSION SQL_MODE="" */;;
-/*!50003 CREATE TRIGGER `trg1` BEFORE INSERT ON `t1` FOR EACH ROW
+/*!50003 CREATE */ /*!50017 DEFINER=`root`@`localhost` */ /*!50003 TRIGGER `trg1` BEFORE INSERT ON `t1` FOR EACH ROW
 begin
 if new.a > 10 then
 set new.a := 10;
@@ -1995,12 +1995,12 @@
 end */;;
 
 /*!50003 SET SESSION SQL_MODE="" */;;
-/*!50003 CREATE TRIGGER `trg2` BEFORE UPDATE ON `t1` FOR EACH ROW begin
+/*!50003 CREATE */ /*!50017 DEFINER=`root`@`localhost` */ /*!50003 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
+/*!50003 CREATE */ /*!50017 DEFINER=`root`@`localhost` */ /*!50003 TRIGGER `trg3` AFTER UPDATE ON `t1` FOR EACH ROW
 begin
 if new.a = -1 then
 set @fired:= "Yes";
@@ -2023,7 +2023,7 @@
 /*!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
+/*!50003 CREATE */ /*!50017 DEFINER=`root`@`localhost` */ /*!50003 TRIGGER `trg4` BEFORE INSERT ON `t2` FOR EACH ROW
 begin
 if new.a > 10 then
 set @fired:= "No";
@@ -2376,7 +2376,7 @@
 /*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
 DELIMITER ;;
 /*!50003 SET SESSION SQL_MODE="" */;;
-/*!50003 CREATE TRIGGER `test trig` BEFORE INSERT ON `t1 test` FOR EACH ROW BEGIN
+/*!50003 CREATE */ /*!50017 DEFINER=`root`@`localhost` */ /*!50003 TRIGGER `test trig` BEFORE INSERT ON `t1 test` FOR EACH ROW BEGIN
 INSERT INTO `t2 test` SET a2 = NEW.a1; END */;;
 
 DELIMITER ;
@@ -2532,7 +2532,7 @@
 /*!50003 SET @OLD_SQL_MODE=@@SQL_MODE*/;
 DELIMITER ;;
 /*!50003 SET SESSION SQL_MODE="IGNORE_SPACE" */;;
-/*!50003 CREATE TRIGGER `tr1` BEFORE INSERT ON `t1` FOR EACH ROW BEGIN
+/*!50003 CREATE */ /*!50017 DEFINER=`root`@`localhost` */ /*!50003 TRIGGER `tr1` BEFORE INSERT ON `t1` FOR EACH ROW BEGIN
 SET new.a = 0;
 END */;;
 

--- 1.212/BitKeeper/etc/ignore	2005-11-24 02:55:42 +03:00
+++ 1.213/BitKeeper/etc/ignore	2006-01-11 02:05:07 +03:00
@@ -1269,3 +1269,6 @@
 zlib/*.ds?
 zlib/*.vcproj
 libmysqld/ha_blackhole.cc
+client/my_user.c
+libmysqld/my_user.c
+sql/my_user.c
Thread
bk commit into 5.0 tree (anozdrin:1.2031) BUG#15110Alexander Nozdrin11 Jan