List:Commits« Previous MessageNext Message »
From:tim Date:August 14 2007 9:35pm
Subject:bk commit into 5.1 tree (tsmith:1.2567)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of tsmith. When tsmith 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@stripped, 2007-08-14 15:35:19-06:00, tsmith@stripped +6 -0
  Updates to allow innodb.test to be run with --embedded-server.

  mysql-test/mysql-test-run.pl@stripped, 2007-08-14 15:35:16-06:00, tsmith@stripped +0 -20
    Remove unused bad merge bitrot code.

  mysql-test/r/innodb.result@stripped, 2007-08-14 15:35:16-06:00, tsmith@stripped +3 -36
    Updates to allow innodb.test to be run with --embedded-server

  mysql-test/suite/binlog/r/binlog_innodb.result@stripped, 2007-08-14 15:35:16-06:00, tsmith@stripped +33 -0
    Updates to allow innodb.test to be run with --embedded-server

  mysql-test/suite/binlog/t/binlog_innodb.test@stripped, 2007-08-14 15:35:16-06:00, tsmith@stripped +39 -0
    Updates to allow innodb.test to be run with --embedded-server

  mysql-test/t/innodb.test@stripped, 2007-08-14 15:35:16-06:00, tsmith@stripped +11 -52
    Updates to allow innodb.test to be run with --embedded-server

  sql/sql_table.cc@stripped, 2007-08-14 15:35:16-06:00, tsmith@stripped +14 -4
    build_table_filename(): Don't add FN_ROOTDIR to
    mysql_data_home if it's already there.  This is
    done to make it easier to write tests which check
    the output of various error messages, and work
    with both the embedded server (mysql_data_home
    is full path, including trailing FN_ROOTDIR) and
    normal server (mysql_data_home is just ".").
    

diff -Nrup a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
--- a/mysql-test/mysql-test-run.pl	2007-08-05 17:35:39 -06:00
+++ b/mysql-test/mysql-test-run.pl	2007-08-14 15:35:16 -06:00
@@ -933,26 +933,6 @@ sub command_line_setup () {
     mtr_error("Will not run in record mode without a specific test case");
   }
 
-  # --------------------------------------------------------------------------
-  # Embedded server flag
-  # --------------------------------------------------------------------------
-  if ( $opt_embedded_server )
-  {
-    $glob_use_embedded_server= 1;
-    push(@glob_test_mode, "embedded");
-    $opt_skip_rpl= 1;              # We never run replication with embedded
-    $opt_skip_ndbcluster= 1;       # Turn off use of NDB cluster
-    $opt_skip_ssl= 1;              # Turn off use of SSL
-
-    # Turn off use of bin log
-    push(@opt_extra_mysqld_opt, "--skip-log-bin");
-
-    if ( $opt_extern )
-    {
-      mtr_error("Can't use --extern with --embedded-server");
-    }
-  }
-
 
   # --------------------------------------------------------------------------
   # ps protcol flag
diff -Nrup a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
--- a/mysql-test/r/innodb.result	2007-07-21 07:54:08 -06:00
+++ b/mysql-test/r/innodb.result	2007-08-14 15:35:16 -06:00
@@ -1086,39 +1086,6 @@ n	d
 1	30
 2	20
 drop table t1,t2;
-CREATE TABLE `t1` (
-`a` int(11) NOT NULL auto_increment,
-`b` int(11) default NULL,
-PRIMARY KEY  (`a`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
-CREATE TABLE `t2` (
-`a` int(11) NOT NULL auto_increment,
-`b` int(11) default NULL,
-PRIMARY KEY  (`a`)
-) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
-insert into t1 values (1,1),(2,2);
-insert into t2 values (1,1),(4,4);
-reset master;
-UPDATE t2,t1 SET t2.a=t1.a+2;
-ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
-select * from t2 /* must be (3,1), (4,4) */;
-a	b
-1	1
-4	4
-show master status /* there must no UPDATE in binlog */;
-File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000001	106		
-delete from t1;
-delete from t2;
-insert into t1 values (1,2),(3,4),(4,4);
-insert into t2 values (1,2),(3,4),(4,4);
-reset master;
-UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
-ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
-show master status /* there must be no UPDATE query event */;
-File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000001	106		
-drop table t1, t2;
 create table t1 (a int, b int) engine=innodb;
 insert into t1 values(20,null);
 select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
@@ -1784,13 +1751,13 @@ Variable_name	Value
 Innodb_page_size	16384
 show status like "Innodb_rows_deleted";
 Variable_name	Value
-Innodb_rows_deleted	72
+Innodb_rows_deleted	70
 show status like "Innodb_rows_inserted";
 Variable_name	Value
-Innodb_rows_inserted	1088
+Innodb_rows_inserted	1083
 show status like "Innodb_rows_updated";
 Variable_name	Value
-Innodb_rows_updated	888
+Innodb_rows_updated	886
 show status like "Innodb_row_lock_waits";
 Variable_name	Value
 Innodb_row_lock_waits	0
diff -Nrup a/mysql-test/suite/binlog/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result
--- a/mysql-test/suite/binlog/r/binlog_innodb.result	2007-06-27 06:35:36 -06:00
+++ b/mysql-test/suite/binlog/r/binlog_innodb.result	2007-08-14 15:35:16 -06:00
@@ -135,4 +135,37 @@ show status like "binlog_cache_disk_use"
 Variable_name	Value
 Binlog_cache_disk_use	1
 drop table t1;
+CREATE TABLE `t1` (
+`a` int(11) NOT NULL auto_increment,
+`b` int(11) default NULL,
+PRIMARY KEY  (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
+CREATE TABLE `t2` (
+`a` int(11) NOT NULL auto_increment,
+`b` int(11) default NULL,
+PRIMARY KEY  (`a`)
+) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
+insert into t1 values (1,1),(2,2);
+insert into t2 values (1,1),(4,4);
+reset master;
+UPDATE t2,t1 SET t2.a=t1.a+2;
+ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
+select * from t2 /* must be (3,1), (4,4) */;
+a	b
+1	1
+4	4
+show master status /* there must no UPDATE in binlog */;
+File	Position	Binlog_Do_DB	Binlog_Ignore_DB
+master-bin.000001	106		
+delete from t1;
+delete from t2;
+insert into t1 values (1,2),(3,4),(4,4);
+insert into t2 values (1,2),(3,4),(4,4);
+reset master;
+UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
+ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
+show master status /* there must be no UPDATE query event */;
+File	Position	Binlog_Do_DB	Binlog_Ignore_DB
+master-bin.000001	106		
+drop table t1, t2;
 End of tests
diff -Nrup a/mysql-test/suite/binlog/t/binlog_innodb.test b/mysql-test/suite/binlog/t/binlog_innodb.test
--- a/mysql-test/suite/binlog/t/binlog_innodb.test	2007-06-27 06:35:27 -06:00
+++ b/mysql-test/suite/binlog/t/binlog_innodb.test	2007-08-14 15:35:16 -06:00
@@ -130,4 +130,43 @@ show status like "binlog_cache_use";
 show status like "binlog_cache_disk_use";
 drop table t1;
 
+#
+# Bug#27716  	multi-update did partially and has not binlogged
+#
+
+CREATE TABLE `t1` (
+  `a` int(11) NOT NULL auto_increment,
+  `b` int(11) default NULL,
+  PRIMARY KEY  (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
+
+CREATE TABLE `t2` (
+  `a` int(11) NOT NULL auto_increment,
+  `b` int(11) default NULL,
+  PRIMARY KEY  (`a`)
+) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
+
+# A. testing multi_update::send_eof() execution branch
+insert into t1 values (1,1),(2,2);
+insert into t2 values (1,1),(4,4);
+reset master;
+--error ER_DUP_ENTRY
+UPDATE t2,t1 SET t2.a=t1.a+2;
+# check
+select * from t2 /* must be (3,1), (4,4) */;
+show master status /* there must no UPDATE in binlog */;
+
+# B. testing multi_update::send_error() execution branch
+delete from t1;
+delete from t2;
+insert into t1 values (1,2),(3,4),(4,4);
+insert into t2 values (1,2),(3,4),(4,4);
+reset master;
+--error ER_DUP_ENTRY
+UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
+show master status /* there must be no UPDATE query event */;
+
+# cleanup bug#27716
+drop table t1, t2;
+
 --echo End of tests
diff -Nrup a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test
--- a/mysql-test/t/innodb.test	2007-07-21 07:54:08 -06:00
+++ b/mysql-test/t/innodb.test	2007-08-14 15:35:16 -06:00
@@ -11,13 +11,7 @@
 #                                                                     #
 #######################################################################
 
--- source include/not_embedded.inc
 -- source include/have_innodb.inc
--- source include/have_log_bin.inc
-
-# Disabling it temporarily for statement-based logging since some
-# tests are not safe while binlog is on.
--- source include/have_binlog_format_mixed_or_row.inc
 
 #
 # Small basic test with ignore
@@ -760,45 +754,6 @@ select * from t2;
 drop table t1,t2;
 
 #
-# Bug#27716  	multi-update did partially and has not binlogged
-#
-
-CREATE TABLE `t1` (
-  `a` int(11) NOT NULL auto_increment,
-  `b` int(11) default NULL,
-  PRIMARY KEY  (`a`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
-
-CREATE TABLE `t2` (
-  `a` int(11) NOT NULL auto_increment,
-  `b` int(11) default NULL,
-  PRIMARY KEY  (`a`)
-) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
-
-# A. testing multi_update::send_eof() execution branch
-insert into t1 values (1,1),(2,2);
-insert into t2 values (1,1),(4,4);
-reset master;
---error ER_DUP_ENTRY
-UPDATE t2,t1 SET t2.a=t1.a+2;
-# check
-select * from t2 /* must be (3,1), (4,4) */;
-show master status /* there must no UPDATE in binlog */;
-
-# B. testing multi_update::send_error() execution branch
-delete from t1;
-delete from t2;
-insert into t1 values (1,2),(3,4),(4,4);
-insert into t2 values (1,2),(3,4),(4,4);
-reset master;
---error ER_DUP_ENTRY
-UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
-show master status /* there must be no UPDATE query event */;
-
-# cleanup bug#27716
-drop table t1, t2;
-
-#
 # Testing of IFNULL
 #
 create table t1 (a int, b int) engine=innodb;
@@ -1175,9 +1130,8 @@ drop table t2;
 
 # Test error handling
 
-# Clean up filename -- embedded server reports whole path without .frm,
-# regular server reports relative path with .frm (argh!)
---replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ / t2.frm t2
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
 --error ER_WRONG_FK_DEF
 create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
 
@@ -1369,9 +1323,8 @@ source include/varchar.inc;
 # Some errors/warnings on create
 #
 
-# Clean up filename -- embedded server reports whole path without .frm,
-# regular server reports relative path with .frm (argh!)
---replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ / t1.frm t1
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
 create table t1 (v varchar(65530), key(v));
 drop table t1;
 create table t1 (v varchar(65536));
@@ -1645,6 +1598,7 @@ disconnect b;
 
 set foreign_key_checks=0;
 create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
+# Embedded server doesn't chdir to data directory
 --replace_result $MYSQLTEST_VARDIR . master-data/ ''
 -- error 1005
 create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
@@ -1656,6 +1610,7 @@ drop table t2;
 
 set foreign_key_checks=0;
 create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
+# Embedded server doesn't chdir to data directory
 --replace_result $MYSQLTEST_VARDIR . master-data/ ''
 -- error 1005
 create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
@@ -1686,6 +1641,7 @@ drop table t2,t1;
 set foreign_key_checks=0;
 create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
 create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
+# Embedded server doesn't chdir to data directory
 --replace_result $MYSQLTEST_VARDIR . master-data/ ''
 -- error 1025
 rename table t3 to t1;
@@ -2311,7 +2267,10 @@ CREATE TABLE t2 (a INT, INDEX(a)) ENGINE
 INSERT INTO t1 VALUES (1);
 INSERT INTO t2 VALUES (1);
 ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
---replace_regex /'\.\/test\/#sql-[0-9a-f_]*'/'#sql-temporary'/
+# mysqltest first does replace_regex, then replace_result
+--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . master-data/ ''
 --error 1025
 ALTER TABLE t2 MODIFY a INT NOT NULL;
 DELETE FROM t1;
diff -Nrup a/sql/sql_table.cc b/sql/sql_table.cc
--- a/sql/sql_table.cc	2007-08-03 08:54:37 -06:00
+++ b/sql/sql_table.cc	2007-08-14 15:35:16 -06:00
@@ -157,6 +157,7 @@ uint tablename_to_filename(const char *f
   SYNOPSIS
    build_table_filename()
      buff                       Where to write result in my_charset_filename.
+                                This may be the same as table_name.
      bufflen                    buff size
      db                         Database name in system_charset_info.
      table_name                 Table name in system_charset_info.
@@ -186,10 +187,11 @@ uint tablename_to_filename(const char *f
 uint build_table_filename(char *buff, size_t bufflen, const char *db,
                           const char *table_name, const char *ext, uint flags)
 {
-  uint length;
   char dbbuff[FN_REFLEN];
   char tbbuff[FN_REFLEN];
   DBUG_ENTER("build_table_filename");
+  DBUG_PRINT("enter", ("db: '%s'  table_name: '%s'  ext: '%s'  flags: %x",
+                       db, table_name, ext, flags));
 
   if (flags & FN_IS_TMP) // FN_FROM_IS_TMP | FN_TO_IS_TMP
     strnmov(tbbuff, table_name, sizeof(tbbuff));
@@ -197,10 +199,18 @@ uint build_table_filename(char *buff, si
     VOID(tablename_to_filename(table_name, tbbuff, sizeof(tbbuff)));
 
   VOID(tablename_to_filename(db, dbbuff, sizeof(dbbuff)));
-  length= strxnmov(buff, bufflen, mysql_data_home, FN_ROOTDIR, dbbuff,
-                   FN_ROOTDIR, tbbuff, ext, NullS) - buff;
+
+  char *end = buff + bufflen;
+  /* Don't add FN_ROOTDIR if mysql_data_home already includes it */
+  char *pos = strnmov(buff, mysql_data_home, bufflen);
+  int rootdir_len= strlen(FN_ROOTDIR);
+  if (pos - rootdir_len >= buff &&
+      memcmp(pos - rootdir_len, FN_ROOTDIR, rootdir_len) != 0)
+    pos= strnmov(pos, FN_ROOTDIR, end - pos);
+  pos= strxnmov(pos, end - pos, dbbuff, FN_ROOTDIR, tbbuff, ext, NullS);
+
   DBUG_PRINT("exit", ("buff: '%s'", buff));
-  DBUG_RETURN(length);
+  DBUG_RETURN(pos - buff);
 }
 
 
Thread
bk commit into 5.1 tree (tsmith:1.2567)tim14 Aug