MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Sergey Glukhov Date:December 29 2008 12:53pm
Subject:bzr commit into mysql-5.1-bugteam branch (Sergey.Glukhov:2755)
Bug#41441
View as plain text  
#At file:///home/gluh/MySQL/mysql-5.1-bugteam/ based on revid:sergey.glukhov@stripped

 2755 Sergey Glukhov	2008-12-29
      Bug#41441 repair csv table crashes debug server
      The problem: data file can not be deleted on win because
      there is another opened instance of this file.
      Data file might be opened twice, on table opening stage and
      during write_row execution. We need to close both instances
      to satisfy Win.
modified:
  mysql-test/r/csv.result
  mysql-test/t/csv.test
  storage/csv/ha_tina.cc

per-file messages:
  mysql-test/r/csv.result
    test result
  mysql-test/t/csv.test
    test case
  storage/csv/ha_tina.cc
    The problem: data file can not be deleted on win because
    there is another opened instance of this file.
    Data file might be opened twice, on table opening stage and
    during write_row execution. We need to close both instances
    to satisfy Win.
=== modified file 'mysql-test/r/csv.result'
--- a/mysql-test/r/csv.result	2008-12-10 09:05:18 +0000
+++ b/mysql-test/r/csv.result	2008-12-29 12:50:51 +0000
@@ -5394,4 +5394,17 @@ select * from t1;
 ERROR HY000: File './test/t1.CSV' not found (Errcode: 2)
 unlock tables;
 drop table t1;
+create table t1(a enum ('a') not null) engine=csv;
+insert into t1 values (2);
+Warnings:
+Warning	1265	Data truncated for column 'a' at row 1
+select * from t1 limit 1;
+ERROR HY000: Table 't1' is marked as crashed and should be repaired
+repair table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	repair	Warning	Data truncated for column 'a' at row 1
+test.t1	repair	status	OK
+select * from t1 limit 1;
+a
+drop table t1;
 End of 5.1 tests

=== modified file 'mysql-test/t/csv.test'
--- a/mysql-test/t/csv.test	2008-12-10 09:05:18 +0000
+++ b/mysql-test/t/csv.test	2008-12-29 12:50:51 +0000
@@ -1804,4 +1804,17 @@ unlock tables;
 drop table t1;
 --disconnect con1
 
+#
+# Bug#41441 repair csv table crashes debug server
+#
+# Note: The test should be removed after Bug#33717 is fixed
+
+create table t1(a enum ('a') not null) engine=csv;
+insert into t1 values (2);
+--error ER_CRASHED_ON_USAGE
+select * from t1 limit 1;
+repair table t1;
+select * from t1 limit 1;
+drop table t1;
+
 --echo End of 5.1 tests

=== modified file 'storage/csv/ha_tina.cc'
--- a/storage/csv/ha_tina.cc	2008-12-10 09:05:18 +0000
+++ b/storage/csv/ha_tina.cc	2008-12-29 12:50:51 +0000
@@ -1439,6 +1439,17 @@ int ha_tina::repair(THD* thd, HA_CHECK_O
     a file, which descriptor is still open. EACCES will be returned
     when trying to delete the "to"-file in my_rename().
   */
+  if (share->tina_write_opened)
+  {
+    /*
+      Data file might be opened twice, on table opening stage and
+      during write_row execution. We need to close both instances
+      to satisfy Win.
+    */
+    if (my_close(share->tina_write_filedes, MYF(0)))
+      DBUG_RETURN(my_errno ? my_errno : -1);
+    share->tina_write_opened= FALSE;
+  }
   if (my_close(data_file,MYF(0)) || my_close(repair_file, MYF(0)) ||
       my_rename(repaired_fname, share->data_file_name, MYF(0)))
     DBUG_RETURN(-1);

Thread
bzr commit into mysql-5.1-bugteam branch (Sergey.Glukhov:2755)Bug#41441Sergey Glukhov29 Dec