List:Commits« Previous MessageNext Message »
From:Sergey Vojtovich Date:October 21 2011 6:18am
Subject:bzr push into mysql-trunk branch (sergey.vojtovich:3518 to 3519)
View as plain text  
 3519 Sergey Vojtovich	2011-10-21 [merge]
      Merge.

    modified:
      mysql-test/r/myisam.result
      mysql-test/t/myisam.test
      storage/myisam/ha_myisam.cc
      storage/myisam/mi_delete_all.c
 3518 Marko Mäkelä	2011-10-21 [merge]
      Merge mysql-5.5 to mysql-trunk.

    modified:
      storage/innobase/btr/btr0cur.c
=== modified file 'mysql-test/r/myisam.result'
--- a/mysql-test/r/myisam.result	2011-06-24 12:53:57 +0000
+++ b/mysql-test/r/myisam.result	2011-10-21 05:42:01 +0000
@@ -2418,6 +2418,30 @@ CARDINALITY
 DROP TABLE t1;
 SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
 SET myisam_repair_threads=@@global.myisam_repair_threads;
+#
+# BUG#11757032 - 49030: OPTIMIZE TABLE BREAKS MYISAM TABLE WHEN
+#                USING MYISAM_USE_MMAP ON WINDOWS
+#
+SET GLOBAL myisam_use_mmap=1;
+CREATE TABLE t1(a INT);
+INSERT INTO t1 VALUES(1),(2);
+DELETE FROM t1 WHERE a=1;
+FLUSH TABLE t1;
+LOCK TABLE t1 WRITE;
+OPTIMIZE TABLE t1;
+Table	Op	Msg_type	Msg_text
+test.t1	optimize	status	OK
+INSERT INTO t1 VALUES(3);
+UNLOCK TABLES;
+SELECT * FROM t1;
+a
+2
+3
+CHECK TABLE t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+DROP TABLE t1;
+SET GLOBAL myisam_use_mmap=default;
 End of 5.1 tests
 #
 # Bug#43600: Incorrect type conversion caused wrong result.

=== modified file 'mysql-test/t/myisam.test'
--- a/mysql-test/t/myisam.test	2010-05-14 10:58:39 +0000
+++ b/mysql-test/t/myisam.test	2011-10-21 05:42:01 +0000
@@ -1647,6 +1647,24 @@ DROP TABLE t1;
 SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
 SET myisam_repair_threads=@@global.myisam_repair_threads;
 
+--echo #
+--echo # BUG#11757032 - 49030: OPTIMIZE TABLE BREAKS MYISAM TABLE WHEN
+--echo #                USING MYISAM_USE_MMAP ON WINDOWS
+--echo #
+SET GLOBAL myisam_use_mmap=1;
+CREATE TABLE t1(a INT);
+INSERT INTO t1 VALUES(1),(2);
+DELETE FROM t1 WHERE a=1;
+FLUSH TABLE t1;
+LOCK TABLE t1 WRITE;
+OPTIMIZE TABLE t1;
+INSERT INTO t1 VALUES(3);
+UNLOCK TABLES;
+SELECT * FROM t1;
+CHECK TABLE t1;
+DROP TABLE t1;
+SET GLOBAL myisam_use_mmap=default;
+
 --echo End of 5.1 tests
 
 --echo #

=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc	2011-10-05 13:16:38 +0000
+++ b/storage/myisam/ha_myisam.cc	2011-10-21 05:42:01 +0000
@@ -1022,6 +1022,18 @@ int ha_myisam::repair(THD *thd, MI_CHECK
 			mi_get_mask_all_keys_active(share->base.keys) :
 			share->state.key_map);
     uint testflag=param.testflag;
+#ifdef HAVE_MMAP
+    bool remap= test(share->file_map);
+    /*
+      mi_repair*() functions family use file I/O even if memory
+      mapping is available.
+
+      Since mixing mmap I/O and file I/O may cause various artifacts,
+      memory mapping must be disabled.
+    */
+    if (remap)
+      mi_munmap_file(file);
+#endif
     if (mi_test_if_sort_rep(file,file->state->records,key_map,0) &&
 	(local_testflag & T_REP_BY_SORT))
     {
@@ -1053,6 +1065,10 @@ int ha_myisam::repair(THD *thd, MI_CHECK
       error=  mi_repair(&param, file, fixed_name,
 			param.testflag & T_QUICK);
     }
+#ifdef HAVE_MMAP
+    if (remap)
+      mi_dynmap_file(file, file->state->data_file_length);
+#endif
     param.testflag=testflag;
     optimize_done=1;
   }

=== modified file 'storage/myisam/mi_delete_all.c'
--- a/storage/myisam/mi_delete_all.c	2011-06-30 15:50:45 +0000
+++ b/storage/myisam/mi_delete_all.c	2011-10-21 05:42:01 +0000
@@ -61,11 +61,6 @@ int mi_delete_all_rows(MI_INFO *info)
       mysql_file_chsize(share->kfile, share->base.keystart, 0, MYF(MY_WME)))
     goto err;
   (void) _mi_writeinfo(info,WRITEINFO_UPDATE_KEYFILE);
-#ifdef HAVE_MMAP
-  /* Map again */
-  if (share->file_map)
-    mi_dynmap_file(info, (my_off_t) 0);
-#endif
   DBUG_RETURN(0);
 
 err:

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-trunk branch (sergey.vojtovich:3518 to 3519) Sergey Vojtovich21 Oct