List:Commits« Previous MessageNext Message »
From:Chad MILLER Date:July 3 2006 2:38pm
Subject:bk commit into 5.1 tree (cmiller:1.2230)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of cmiller. When cmiller 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.2230 06/07/03 10:38:47 cmiller@zippy.(none) +18 -0
  Merge zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.0
  into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1

  sql/sql_table.cc
    1.352 06/07/03 10:38:43 cmiller@zippy.(none) +13 -13
    manual merge.

  sql/sp_head.cc
    1.226 06/07/03 10:38:43 cmiller@zippy.(none) +0 -2
    manual merge.

  sql/log.cc
    1.219 06/07/03 10:38:43 cmiller@zippy.(none) +2 -7
    manual merge.

  mysql-test/t/mysqldump.test
    1.103 06/07/03 10:38:43 cmiller@zippy.(none) +1 -0
    manual merge.

  mysql-test/t/func_time.test
    1.48 06/07/03 10:38:43 cmiller@zippy.(none) +0 -0
    manual merge.

  mysql-test/r/mysqldump.result
    1.111 06/07/03 10:38:43 cmiller@zippy.(none) +28 -0
    manual merge.

  mysql-test/r/func_time.result
    1.60 06/07/03 10:38:43 cmiller@zippy.(none) +0 -0
    manual merge.

  sql/table.cc
    1.226 06/06/30 18:40:09 cmiller@zippy.(none) +1 -0
    Auto merged

  sql/log_event.h
    1.136 06/06/30 18:40:09 cmiller@zippy.(none) +0 -0
    Auto merged

  sql/log_event.cc
    1.231 06/06/30 18:40:09 cmiller@zippy.(none) +0 -0
    Auto merged

  mysys/my_lib.c
    1.27 06/06/30 18:40:09 cmiller@zippy.(none) +0 -0
    Auto merged

  mysql-test/t/type_timestamp.test
    1.28 06/06/30 18:40:09 cmiller@zippy.(none) +0 -0
    Auto merged

  mysql-test/t/bdb.test
    1.54 06/06/30 18:40:09 cmiller@zippy.(none) +0 -0
    Auto merged

  mysql-test/r/udf.result
    1.6 06/06/30 18:40:09 cmiller@zippy.(none) +0 -0
    Auto merged

  mysql-test/r/type_timestamp.result
    1.33 06/06/30 18:40:08 cmiller@zippy.(none) +0 -0
    Auto merged

  mysql-test/r/bdb.result
    1.54 06/06/30 18:40:08 cmiller@zippy.(none) +0 -0
    Auto merged

  client/mysqldump.c
    1.241 06/06/30 18:40:08 cmiller@zippy.(none) +0 -0
    Auto merged

  BitKeeper/etc/ignore
    1.249 06/06/30 18:40:00 cmiller@zippy.(none) +1 -2
    auto-union

# 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:	cmiller
# Host:	zippy.(none)
# Root:	/home/cmiller/work/mysql/merge/mysql-5.1/RESYNC

--- 1.240/client/mysqldump.c	2006-06-21 08:14:20 -04:00
+++ 1.241/client/mysqldump.c	2006-06-30 18:40:08 -04:00
@@ -1643,9 +1643,15 @@ static uint get_table_structure(char *ta
       field= mysql_fetch_field_direct(result, 0);
       if (strcmp(field->name, "View") == 0)
       {
+        char *scv_buff = NULL;
+
         if (verbose)
           fprintf(stderr, "-- It's a view, create dummy table for view\n");
 
+        /* save "show create" statement for later */
+        if ((row= mysql_fetch_row(result)) && (scv_buff=row[1]))
+          scv_buff= my_strdup(scv_buff, MYF(0));
+
         mysql_free_result(result);
 
         /*
@@ -1663,9 +1669,22 @@ static uint get_table_structure(char *ta
                     "SHOW FIELDS FROM %s", result_table);
         if (mysql_query_with_error_report(sock, 0, query_buff))
         {
+          /*
+            View references invalid or privileged table/col/fun (err 1356),
+            so we cannot create a stand-in table.  Be defensive and dump
+            a comment with the view's 'show create' statement. (Bug #17371)
+          */
+
+          if (mysql_errno(sock) == ER_VIEW_INVALID)
+            fprintf(sql_file, "\n-- failed on view %s: %s\n\n", result_table, scv_buff ? scv_buff : "");
+
+          my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
+
           safe_exit(EX_MYSQLERR);
-          DBUG_RETURN(0);
+          DBUG_RETURN(0); 
         }
+        else
+          my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
 
         if ((result= mysql_store_result(sock)))
         {
@@ -1705,6 +1724,9 @@ static uint get_table_structure(char *ta
           }
         }
         mysql_free_result(result);
+
+        if (path)
+          my_fclose(sql_file, MYF(MY_WME));
 
         seen_views= 1;
         DBUG_RETURN(0);

--- 1.26/mysys/my_lib.c	2006-05-08 15:49:58 -04:00
+++ 1.27/mysys/my_lib.c	2006-06-30 18:40:09 -04:00
@@ -495,7 +495,7 @@ MY_DIR	*my_dir(const char *path, myf MyF
   if (!(MyFlags & MY_DONT_SORT))
     qsort((void *) result->dir_entry, result->number_off_files,
           sizeof(FILEINFO), (qsort_cmp) comp_names);
-  DBUG_PRINT(exit, ("found %d files", result->number_off_files));
+  DBUG_PRINT("exit", ("found %d files", result->number_off_files));
   DBUG_RETURN(result);
 error:
   my_errno=errno;

--- 1.218/sql/log.cc	2006-06-28 09:21:02 -04:00
+++ 1.219/sql/log.cc	2006-07-03 10:38:43 -04:00
@@ -42,6 +42,8 @@ LOGGER logger;
 MYSQL_BIN_LOG mysql_bin_log;
 ulong sync_binlog_counter= 0;
 
+static Muted_query_log_event invisible_commit;
+
 static bool test_if_number(const char *str,
 			   long *res, bool allow_wildcards);
 static int binlog_init();
@@ -1185,10 +1187,9 @@ static int
 binlog_end_trans(THD *thd, binlog_trx_data *trx_data, Log_event *end_ev)
 {
   DBUG_ENTER("binlog_end_trans");
-  int error=0;
-  IO_CACHE *trans_log= &trx_data->trans_log;
 
-  if (end_ev)
+  /* NULL denotes ROLLBACK with nothing to replicate */
+  if (end_ev != NULL)
   {
     /*
       We can always end the statement when ending a transaction since
@@ -1259,9 +1260,14 @@ static int binlog_commit(THD *thd, bool 
     // we're here because trans_log was flushed in MYSQL_BIN_LOG::log()
     DBUG_RETURN(0);
   }
-  Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE);
-  qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE)
-  DBUG_RETURN(binlog_end_trans(thd, trx_data, &qev));
+  if (all) 
+  {
+    Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE);
+    qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE)
+    DBUG_RETURN(binlog_end_trans(thd, trx_data, &qev));
+  }
+  else
+    DBUG_RETURN(binlog_end_trans(thd, trx_data, &invisible_commit));
 }
 
 static int binlog_rollback(THD *thd, bool all)
@@ -3515,6 +3521,9 @@ bool MYSQL_BIN_LOG::write(THD *thd, IO_C
 {
   DBUG_ENTER("MYSQL_BIN_LOG::write(THD *, IO_CACHE *, Log_event *)");
   VOID(pthread_mutex_lock(&LOCK_log));
+
+  /* NULL would represent nothing to replicate after ROLLBACK */
+  DBUG_ASSERT(commit_event != NULL);
 
   if (likely(is_open()))                       // Should always be true
   {

--- 1.230/sql/log_event.cc	2006-06-28 13:03:41 -04:00
+++ 1.231/sql/log_event.cc	2006-06-30 18:40:09 -04:00
@@ -1287,6 +1287,18 @@ bool Query_log_event::write(IO_CACHE* fi
           my_b_safe_write(file, (byte*) query, q_len)) ? 1 : 0;
 }
 
+/*
+  Query_log_event::Query_log_event()
+ 
+  The simplest constructor that could possibly work.  This is used for
+  creating static objects that have a special meaning and are invisible
+  to the log.  
+*/
+Query_log_event::Query_log_event()
+  :Log_event(), data_buf(0)
+{
+}
+
 
 /*
   Query_log_event::Query_log_event()
@@ -1931,6 +1943,21 @@ end:
   return (thd->query_error ? thd->query_error : 
           (thd->one_shot_set ? (rli->inc_event_relay_log_pos(),0) :
            Log_event::exec_event(rli))); 
+}
+#endif
+
+
+/**************************************************************************
+	Muted_query_log_event methods
+**************************************************************************/
+
+#ifndef MYSQL_CLIENT
+/*
+  Muted_query_log_event::Muted_query_log_event()
+*/
+Muted_query_log_event::Muted_query_log_event()
+  :Query_log_event()
+{
 }
 #endif
 

--- 1.135/sql/log_event.h	2006-06-15 07:38:08 -04:00
+++ 1.136/sql/log_event.h	2006-06-30 18:40:09 -04:00
@@ -808,6 +808,7 @@ public:
   void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
 #endif
 
+  Query_log_event();
   Query_log_event(const char* buf, uint event_len,
                   const Format_description_log_event *description_event,
                   Log_event_type event_type);
@@ -830,6 +831,26 @@ public:
   virtual ulong get_post_header_size_for_derived() { return 0; }
   /* Writes derived event-specific part of post header. */
 };
+
+
+/*****************************************************************************
+
+  Muted Query Log Event class
+
+  Pretends to Log SQL queries, but doesn't actually do so.
+
+ ****************************************************************************/
+class Muted_query_log_event: public Query_log_event
+{
+public:
+#ifndef MYSQL_CLIENT
+  Muted_query_log_event();
+
+  bool write(IO_CACHE* file) { return(false); };
+  virtual bool write_post_header_for_derived(IO_CACHE* file) { return FALSE; }
+#endif
+};
+
 
 #ifdef HAVE_REPLICATION
 

--- 1.351/sql/sql_table.cc	2006-06-27 16:19:18 -04:00
+++ 1.352/sql/sql_table.cc	2006-07-03 10:38:43 -04:00
@@ -3278,8 +3278,23 @@ bool mysql_create_table_internal(THD *th
       my_casedn_str(files_charset_info, path);
     create_info->table_options|=HA_CREATE_DELAY_KEY_WRITE;
   }
-  else
+  else  
+  {
+#ifdef FN_DEVCHAR
+    /* check if the table name contains FN_DEVCHAR when defined */
+    const char *start= alias;
+    while (*start != '\0')
+    {
+      if (*start == FN_DEVCHAR)
+      {
+        my_error(ER_WRONG_TABLE_NAME, MYF(0), alias);
+			  DBUG_RETURN(TRUE);
+      }
+      start++;
+    }	  
+#endif
     path_length= build_table_filename(path, sizeof(path), db, alias, reg_ext);
+  }
 
   /* Check if table already exists */
   if ((create_info->options & HA_LEX_CREATE_TMP_TABLE) &&

--- 1.59/mysql-test/r/func_time.result	2006-06-30 08:08:16 -04:00
+++ 1.60/mysql-test/r/func_time.result	2006-07-03 10:38:43 -04:00
@@ -1,4 +1,5 @@
 drop table if exists t1,t2,t3;
+set time_zone="+03:00";
 select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29");
 from_days(to_days("960101"))	to_days(960201)-to_days("19960101")	to_days(date_add(curdate(), interval 1 day))-to_days(curdate())	weekday("1997-11-29")
 1996-01-01	31	1	5
@@ -932,6 +933,7 @@ id	day	id	day
 1	2005-06-01	3	2005-07-15
 3	2005-07-01	3	2005-07-15
 DROP TABLE t1,t2;
+set time_zone= @@global.time_zone;
 End of 5.0 tests
 select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
 date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)

--- 1.32/mysql-test/r/type_timestamp.result	2006-06-01 05:53:09 -04:00
+++ 1.33/mysql-test/r/type_timestamp.result	2006-06-30 18:40:08 -04:00
@@ -1,4 +1,5 @@
 drop table if exists t1,t2;
+set time_zone="+03:00";
 CREATE TABLE t1 (a int, t timestamp);
 CREATE TABLE t2 (a int, t datetime);
 SET TIMESTAMP=1234;
@@ -491,3 +492,4 @@ a	b	c
 5	NULL	2001-09-09 04:46:59
 6	NULL	2006-06-06 06:06:06
 drop table t1;
+set time_zone= @@global.time_zone;

--- 1.47/mysql-test/t/func_time.test	2006-06-30 08:08:16 -04:00
+++ 1.48/mysql-test/t/func_time.test	2006-07-03 10:38:43 -04:00
@@ -5,6 +5,9 @@
 drop table if exists t1,t2,t3;
 --enable_warnings
 
+# Set timezone to GMT-3, to make it possible to use "interval 3 hour"
+set time_zone="+03:00";
+
 select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29");
 select period_add("9602",-12),period_diff(199505,"9404") ;
 
@@ -335,6 +338,7 @@ select last_day("1997-12-1")+0.0;
 
 # Test SAPDB UTC_% functions. This part is TZ dependant (It is supposed that
 # TZ variable set to GMT-3
+
 select strcmp(date_sub(localtimestamp(), interval 3 hour), utc_timestamp())=0;
 select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%T"), utc_time())=0;
 select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%Y-%m-%d"), utc_date())=0;
@@ -505,6 +509,9 @@ SELECT * FROM t1, t2 
  
 DROP TABLE t1,t2;
 
+
+# Restore timezone to default
+set time_zone= @@global.time_zone;
 --echo End of 5.0 tests
 
 #

--- 1.27/mysql-test/t/type_timestamp.test	2006-06-01 05:53:10 -04:00
+++ 1.28/mysql-test/t/type_timestamp.test	2006-06-30 18:40:09 -04:00
@@ -6,6 +6,9 @@
 drop table if exists t1,t2;
 --enable_warnings
 
+# Set timezone to GMT-3, to make it possible to use "interval 3 hour"
+set time_zone="+03:00";
+
 CREATE TABLE t1 (a int, t timestamp);
 CREATE TABLE t2 (a int, t datetime);
 SET TIMESTAMP=1234;
@@ -322,3 +325,6 @@ select * from t1;
 drop table t1;
 
 # End of 4.1 tests
+
+# Restore timezone to default
+set time_zone= @@global.time_zone;

--- 1.5/mysql-test/r/udf.result	2006-04-30 16:13:54 -04:00
+++ 1.6/mysql-test/r/udf.result	2006-06-30 18:40:09 -04:00
@@ -76,6 +76,24 @@ call XXX2();
 metaphon(testval)
 HL
 drop procedure xxx2;
+CREATE TABLE bug19904(n INT, v varchar(10));
+INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four');
+SELECT myfunc_double(n) AS f FROM bug19904;
+f
+49.00
+50.00
+NULL
+51.00
+52.00
+SELECT metaphon(v) AS f FROM bug19904;
+f
+ON
+TW
+NULL
+0R
+FR
+DROP TABLE bug19904;
+End of 5.0 tests.
 DROP FUNCTION metaphon;
 DROP FUNCTION myfunc_double;
 DROP FUNCTION myfunc_nonexist;

--- 1.110/mysql-test/r/mysqldump.result	2006-06-21 09:30:14 -04:00
+++ 1.111/mysql-test/r/mysqldump.result	2006-07-03 10:38:43 -04:00
@@ -2782,6 +2782,25 @@ end	AFTER	#		root@localhost
 drop trigger tr1;
 drop trigger tr2;
 drop table t1, t2;
+create table t (qty int, price int);
+insert into t values(3, 50);
+insert into t values(5, 51);
+create view v1 as select qty, price, qty*price as value from t;
+create view v2 as select qty from v1;
+mysqldump {
+/*!50001 CREATE ALGORITHM=UNDEFINED */
+/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
+/*!50001 VIEW `v1` AS select `t`.`qty` AS `qty`,`t`.`price` AS `price`,(`t`.`qty` * `t`.`price`) AS `value` from `t` */;
+
+} mysqldump {
+/*!50001 CREATE ALGORITHM=UNDEFINED */
+/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
+/*!50001 VIEW `v2` AS select `v1`.`qty` AS `qty` from `v1` */;
+
+} mysqldump
+drop view v1;
+drop view v2;
+drop table t;
 /*!50003 CREATE FUNCTION `f`() RETURNS bigint(20)
 return 42 */|
 /*!50003 CREATE PROCEDURE `p`()
@@ -2796,6 +2815,43 @@ p		CREATE DEFINER=`root`@`localhost` PRO
 select 42
 drop function f;
 drop procedure p;
+create table t1 ( id serial );
+create view v1 as select * from t1;
+drop table t1;
+mysqldump {
+
+-- failed on view `v1`: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`id` AS `id` from `t1`
+
+} mysqldump
+drop view v1;
+create database mysqldump_test_db;
+use mysqldump_test_db;
+create table t1 (id int);
+create view v1 as select * from t1;
+insert into t1 values (1232131);
+insert into t1 values (4711);
+insert into t1 values (3231);
+insert into t1 values (0815);
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+/*!40000 DROP DATABASE IF EXISTS `mysqldump_test_db`*/;
+
+CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqldump_test_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
+
+USE `mysqldump_test_db`;
+DROP TABLE IF EXISTS `t1`;
+CREATE TABLE `t1` (
+  `id` int(11) default NULL
 create table t1 (a text , b text);
 create table t2 (a text , b text);
 insert t1 values ("Duck, Duck", "goose");

--- 1.102/mysql-test/t/mysqldump.test	2006-06-21 08:14:22 -04:00
+++ 1.103/mysql-test/t/mysqldump.test	2006-07-03 10:38:43 -04:00
@@ -1159,6 +1159,27 @@ drop table t1, t2;
 
 
 #
+# Bug#18462 mysqldump does not dump view structures correctly
+#
+#
+create table t (qty int, price int);
+insert into t values(3, 50);
+insert into t values(5, 51);
+create view v1 as select qty, price, qty*price as value from t;
+create view v2 as select qty from v1;
+--echo mysqldump {
+--exec $MYSQL_DUMP --compact -F --tab . test
+--exec cat v1.sql
+--echo } mysqldump {
+--exec cat v2.sql
+--echo } mysqldump
+--rm v.sql t.sql t.txt
+drop view v1;
+drop view v2;
+drop table t;
+
+
+#
 # Bug#14857 Reading dump files with single statement stored routines fails.
 # fixed by patch for bug#16878
 #
@@ -1174,6 +1195,20 @@ show create procedure p;
 drop function f;
 drop procedure p;
 
+#
+# Bug #17371 Unable to dump a schema with invalid views
+#
+#
+create table t1 ( id serial );
+create view v1 as select * from t1;
+drop table t1;
+# mysqldump gets 1356 from server, but gives us 2
+--echo mysqldump {
+--error 2
+--exec $MYSQL_DUMP --force -N --compact --skip-comments test
+--echo } mysqldump
+drop view v1;
+#
 # Added for use-thread option
 #
 create table t1 (a text , b text);

--- 1.248/BitKeeper/etc/ignore	2006-06-28 20:22:05 -04:00
+++ 1.249/BitKeeper/etc/ignore	2006-06-30 18:40:00 -04:00
@@ -1120,6 +1120,7 @@ server-tools/instance-manager/messages.c
 server-tools/instance-manager/mysql_connection.cpp
 server-tools/instance-manager/mysqlmanager
 server-tools/instance-manager/mysqlmanager.cpp
+server-tools/instance-manager/net_serv.cc
 server-tools/instance-manager/options.cpp
 server-tools/instance-manager/parse.cpp
 server-tools/instance-manager/parse_output.cpp
@@ -1780,4 +1781,3 @@ vio/viotest-sslconnect.cpp
 vio/viotest.cpp
 zlib/*.ds?
 zlib/*.vcproj
-server-tools/instance-manager/net_serv.cc

--- 1.53/mysql-test/r/bdb.result	2006-02-22 04:09:47 -05:00
+++ 1.54/mysql-test/r/bdb.result	2006-06-30 18:40:08 -04:00
@@ -1962,6 +1962,40 @@ create table t1 (a int) engine=bdb;
 commit;
 alter table t1 add primary key(a);
 drop table t1;
+set autocommit=1;
+reset master;
+create table bug16206 (a int) engine=         blackhole;
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+show binlog events;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+f	n	Format_desc	1	n	Server ver: VERSION, Binlog ver: 4
+f	n	Query	1	n	use `test`; create table bug16206 (a int) engine=         blackhole
+f	n	Query	1	n	use `test`; insert into bug16206 values(1)
+f	n	Query	1	n	use `test`; insert into bug16206 values(2)
+drop table bug16206;
+reset master;
+create table bug16206 (a int) engine=         bdb;
+insert into bug16206 values(0);
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+insert into bug16206 values(3);
+show binlog events;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+f	n	Format_desc	1	n	Server ver: VERSION, Binlog ver: 4
+f	n	Query	1	n	use `test`; create table bug16206 (a int) engine=         bdb
+f	n	Query	1	n	use `test`; insert into bug16206 values(0)
+f	n	Query	1	n	use `test`; insert into bug16206 values(1)
+f	n	Query	1	n	use `test`; BEGIN
+f	n	Query	1	n	use `test`; insert into bug16206 values(2)
+f	n	Query	1	n	use `test`; COMMIT
+f	n	Query	1	n	use `test`; insert into bug16206 values(3)
+drop table bug16206;
+set autocommit=0;
 End of 5.0 tests
 create table t1 (a int) engine=bdb;
 set session transaction isolation level repeatable read;

--- 1.53/mysql-test/t/bdb.test	2006-02-17 14:03:30 -05:00
+++ 1.54/mysql-test/t/bdb.test	2006-06-30 18:40:09 -04:00
@@ -1045,6 +1045,41 @@ commit;
 alter table t1 add primary key(a);
 drop table t1;
 
+
+#
+# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
+#
+set autocommit=1;
+
+let $VERSION=`select version()`;
+
+reset master;
+create table bug16206 (a int) engine=         blackhole;
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+--replace_result $VERSION VERSION
+--replace_column 1 f 2 n 5 n
+show binlog events;
+drop table bug16206;
+
+reset master;
+create table bug16206 (a int) engine=         bdb;
+insert into bug16206 values(0);
+insert into bug16206 values(1);
+start transaction;
+insert into bug16206 values(2);
+commit;
+insert into bug16206 values(3);
+--replace_result $VERSION VERSION
+--replace_column 1 f 2 n 5 n
+show binlog events;
+drop table bug16206;
+
+set autocommit=0;
+
+
 --echo End of 5.0 tests
 
 #
Thread
bk commit into 5.1 tree (cmiller:1.2230)Chad MILLER3 Jul