List:Commits« Previous MessageNext Message »
From:Sergey Glukhov Date:December 29 2008 12:58pm
Subject:bzr push into mysql-5.1-bugteam branch (Sergey.Glukhov:2753 to 2755)
Bug#41441
View as plain text  
 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

 2754 Sergey Glukhov	2008-12-29 [merge]
      5.0-bugteam->5.1-bugteam merge
modified:
  mysql-test/r/status.result
  mysql-test/t/status.test
  sql/mysqld.cc

 2753 Sergey Glukhov	2008-12-24 [merge]
      5.0-bugteam->5.1-bugteam merge
modified:
  mysql-test/r/select.result
  mysql-test/t/select.test
  sql/sql_select.cc
  sql/sql_select.h

=== 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/r/status.result'
--- a/mysql-test/r/status.result	2008-10-03 11:40:45 +0000
+++ b/mysql-test/r/status.result	2008-12-29 12:15:48 +0000
@@ -209,4 +209,29 @@ ERROR 42000: SELECT command denied to us
 drop database db37908;
 drop procedure proc37908;
 drop function func37908;
+DROP PROCEDURE IF EXISTS p1;
+DROP FUNCTION IF EXISTS f1;
+CREATE FUNCTION f1() RETURNS INTEGER
+BEGIN
+DECLARE foo INTEGER;
+DECLARE bar INTEGER;
+SET foo=1;
+SET bar=2;
+RETURN foo;
+END $$
+CREATE PROCEDURE p1()
+BEGIN
+SELECT 1;
+END $$
+SELECT f1();
+f1()
+1
+CALL p1();
+1
+1
+SELECT 9;
+9
+9
+DROP PROCEDURE p1;
+DROP FUNCTION f1;
 set @@global.concurrent_insert= @old_concurrent_insert;

=== 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 'mysql-test/t/status.test'
--- a/mysql-test/t/status.test	2008-10-03 11:40:45 +0000
+++ b/mysql-test/t/status.test	2008-12-29 12:15:48 +0000
@@ -238,6 +238,8 @@ let $tmp_table2 = `show global status li
 --disable_query_log
 eval select substring_index('$rnd_next2',0x9,-1)-substring_index('$rnd_next',0x9,-1) as rnd_diff, substring_index('$tmp_table2',0x9,-1)-substring_index('$tmp_table',0x9,-1) as tmp_table_diff;
 --enable_query_log
+disconnect con1;
+connection default;
 
 # 
 # Bug#30252 Com_create_function is not incremented.
@@ -291,6 +293,43 @@ connection root;
 drop database db37908;
 drop procedure proc37908;
 drop function func37908;
+
+#
+# Bug#41131 "Questions" fails to increment - ignores statements instead stored procs
+#
+connect (con1,localhost,root,,);
+connection con1;
+--disable_warnings
+DROP PROCEDURE IF EXISTS p1;
+DROP FUNCTION IF EXISTS f1;
+--enable_warnings
+DELIMITER $$;
+CREATE FUNCTION f1() RETURNS INTEGER
+BEGIN
+  DECLARE foo INTEGER;
+  DECLARE bar INTEGER;
+  SET foo=1;
+  SET bar=2;
+  RETURN foo;
+END $$
+CREATE PROCEDURE p1()
+  BEGIN
+  SELECT 1;
+END $$
+DELIMITER ;$$
+let $org_queries= `SHOW STATUS LIKE 'Queries'`;
+SELECT f1();
+CALL p1();
+let $new_queries= `SHOW STATUS LIKE 'Queries'`;
+--disable_log
+let $diff= `SELECT SUBSTRING('$new_queries',9)-SUBSTRING('$org_queries',9)`;
+--enable_log
+eval SELECT $diff;
+disconnect con1;
+connection default;
+DROP PROCEDURE p1;
+DROP FUNCTION f1;
+
 # End of 5.1 tests
 
 # Restore global concurrent_insert value. Keep in the end of the test file.

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2008-12-24 14:47:24 +0000
+++ b/sql/mysqld.cc	2008-12-29 12:15:48 +0000
@@ -6910,6 +6910,14 @@ The minimum value for this variable is 4
 };
 
 
+static int show_queries(THD *thd, SHOW_VAR *var, char *buff)
+{
+  var->type= SHOW_LONGLONG;
+  var->value= (char *)&thd->query_id;
+  return 0;
+}
+
+
 static int show_net_compression(THD *thd, SHOW_VAR *var, char *buff)
 {
   var->type= SHOW_MY_BOOL;
@@ -7325,6 +7333,7 @@ SHOW_VAR status_vars[]= {
   {"Qcache_queries_in_cache",  (char*) &query_cache.queries_in_cache, SHOW_LONG_NOFLUSH},
   {"Qcache_total_blocks",      (char*) &query_cache.total_blocks, SHOW_LONG_NOFLUSH},
 #endif /*HAVE_QUERY_CACHE*/
+  {"Queries",                  (char*) &show_queries,            SHOW_FUNC},
   {"Questions",                (char*) offsetof(STATUS_VAR, questions), SHOW_LONG_STATUS},
 #ifdef HAVE_REPLICATION
   {"Rpl_status",               (char*) &show_rpl_status,          SHOW_FUNC},

=== 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 push into mysql-5.1-bugteam branch (Sergey.Glukhov:2753 to 2755)Bug#41441Sergey Glukhov29 Dec