List:Commits« Previous MessageNext Message »
From:Ingo Struewing Date:July 14 2008 6:59pm
Subject:bzr push into mysql-6.0-backup branch (ingo.struewing:2663)
View as plain text  
 2663 Ingo Struewing	2008-07-14 [merge]
      merge
removed:
  mysql-test/suite/parts/r/ndb_blob_partition.result
  mysql-test/suite/parts/r/ndb_partition_error.result
  mysql-test/suite/parts/r/ndb_partition_key.result
  mysql-test/suite/parts/r/ndb_partition_list.result
  mysql-test/suite/parts/r/ndb_partition_range.result
  mysql-test/suite/parts/r/rpl_ndb_dd_partitions.result
  mysql-test/suite/parts/t/ndb_blob_partition.test
  mysql-test/suite/parts/t/ndb_partition_error.test
  mysql-test/suite/parts/t/ndb_partition_key.test
  mysql-test/suite/parts/t/ndb_partition_list.test
  mysql-test/suite/parts/t/ndb_partition_range.test
  mysql-test/suite/parts/t/rpl_ndb_dd_partitions.test
added:
  mysql-test/r/subselect_debug.result
  mysql-test/suite/bugs/combinations
  mysql-test/suite/bugs/r/rpl_bug37426.result
  mysql-test/suite/bugs/t/rpl_bug37426.test
  mysql-test/t/subselect_debug.test
modified:
  client/mysqltest.c
  mysql-test/extra/rpl_tests/rpl_row_basic.test
  mysql-test/include/have_big5.inc
  mysql-test/include/have_binlog_format_mixed.inc
  mysql-test/include/have_binlog_format_mixed_or_row.inc
  mysql-test/include/have_binlog_format_mixed_or_statement.inc
  mysql-test/include/have_binlog_format_row.inc
  mysql-test/include/have_binlog_format_row_or_statement.inc
  mysql-test/include/have_binlog_format_statement.inc
  mysql-test/include/have_bug25714.inc
  mysql-test/include/have_case_sensitive_file_system.inc
  mysql-test/include/have_community_features.inc
  mysql-test/include/have_compress.inc
  mysql-test/include/have_cp1250_ch.inc
  mysql-test/include/have_cp932.inc
  mysql-test/include/have_crypt.inc
  mysql-test/include/have_debug.inc
  mysql-test/include/have_eucjpms.inc
  mysql-test/include/have_euckr.inc
  mysql-test/include/have_example_plugin.inc
  mysql-test/include/have_gb2312.inc
  mysql-test/include/have_gbk.inc
  mysql-test/include/have_geometry.inc
  mysql-test/include/have_latin2_ch.inc
  mysql-test/include/have_log_bin.inc
  mysql-test/include/have_lowercase0.inc
  mysql-test/include/have_ndbapi_examples.inc
  mysql-test/include/have_outfile.inc
  mysql-test/include/have_partition.inc
  mysql-test/include/have_pool_of_threads.inc
  mysql-test/include/have_query_cache.inc
  mysql-test/include/have_sjis.inc
  mysql-test/include/have_ssl_communication.inc
  mysql-test/include/have_ssl_crypto_functs.inc
  mysql-test/include/have_symlink.inc
  mysql-test/include/have_tis620.inc
  mysql-test/include/have_ucs2.inc
  mysql-test/include/have_udf.inc
  mysql-test/include/have_ujis.inc
  mysql-test/include/have_utf16.inc
  mysql-test/include/have_utf32.inc
  mysql-test/r/group_min_max_innodb.result
  mysql-test/r/max_user_connections_func.result
  mysql-test/r/mysqltest.result
  mysql-test/r/partition.result
  mysql-test/r/partition_hash.result
  mysql-test/r/partition_pruning.result
  mysql-test/r/partition_range.result
  mysql-test/r/ps_ddl.result
  mysql-test/r/ps_ddl1.result
  mysql-test/r/sp-error.result
  mysql-test/r/subselect.result
  mysql-test/r/subselect_no_mat.result
  mysql-test/r/subselect_no_opts.result
  mysql-test/r/subselect_no_semijoin.result
  mysql-test/suite/binlog/r/binlog_base64_flag.result
  mysql-test/suite/binlog/t/binlog_base64_flag.test
  mysql-test/suite/funcs_1/r/falcon_storedproc.result
  mysql-test/suite/funcs_1/r/innodb_storedproc.result
  mysql-test/suite/funcs_1/r/memory_storedproc.result
  mysql-test/suite/funcs_1/r/myisam_storedproc.result
  mysql-test/suite/funcs_1/r/ndb_storedproc.result
  mysql-test/suite/funcs_1/storedproc/storedproc_master.inc
  mysql-test/suite/funcs_1/t/disabled.def
  mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test
  mysql-test/suite/funcs_2/charset/charset_master.test
  mysql-test/suite/funcs_2/t/innodb_charset.test
  mysql-test/suite/funcs_2/t/memory_charset.test
  mysql-test/suite/funcs_2/t/myisam_charset.test
  mysql-test/suite/funcs_2/t/ndb_charset.test
  mysql-test/suite/parts/inc/part_supported_sql_funcs_delete.inc
  mysql-test/suite/parts/inc/partition_alter_11.inc
  mysql-test/suite/parts/inc/partition_bigint.inc
  mysql-test/suite/parts/inc/partition_check_drop.inc
  mysql-test/suite/parts/inc/partition_int.inc
  mysql-test/suite/parts/inc/partition_layout.inc
  mysql-test/suite/parts/inc/partition_layout_check1.inc
  mysql-test/suite/parts/inc/partition_layout_check2.inc
  mysql-test/suite/parts/inc/partition_mediumint.inc
  mysql-test/suite/parts/inc/partition_smallint.inc
  mysql-test/suite/parts/inc/partition_supported_sql_funcs.inc
  mysql-test/suite/parts/inc/partition_tinyint.inc
  mysql-test/suite/parts/r/ndb_dd_backuprestore.result
  mysql-test/suite/parts/r/part_supported_sql_func_ndb.result
  mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result
  mysql-test/suite/parts/r/partition_alter1_1_innodb.result
  mysql-test/suite/parts/r/partition_alter1_1_myisam.result
  mysql-test/suite/parts/r/partition_alter1_2_innodb.result
  mysql-test/suite/parts/r/partition_alter1_2_myisam.result
  mysql-test/suite/parts/r/partition_alter2_innodb.result
  mysql-test/suite/parts/r/partition_alter2_myisam.result
  mysql-test/suite/parts/r/partition_alter3_innodb.result
  mysql-test/suite/parts/r/partition_alter3_myisam.result
  mysql-test/suite/parts/r/partition_basic_innodb.result
  mysql-test/suite/parts/r/partition_basic_myisam.result
  mysql-test/suite/parts/r/partition_basic_symlink_myisam.result
  mysql-test/suite/parts/r/partition_engine_myisam.result
  mysql-test/suite/parts/r/partition_engine_ndb.result
  mysql-test/suite/parts/r/partition_int_innodb.result
  mysql-test/suite/parts/r/partition_int_myisam.result
  mysql-test/suite/parts/r/partition_int_ndb.result
  mysql-test/suite/parts/r/partition_syntax_myisam.result
  mysql-test/suite/parts/t/disabled.def
  mysql-test/suite/parts/t/ndb_dd_backuprestore.test
  mysql-test/suite/parts/t/part_supported_sql_func_ndb.test
  mysql-test/suite/parts/t/partition_alter1_1_2_ndb.test
  mysql-test/suite/parts/t/partition_alter1_1_ndb.test
  mysql-test/suite/parts/t/partition_alter1_2_ndb.test
  mysql-test/suite/parts/t/partition_alter2_ndb.test
  mysql-test/suite/parts/t/partition_basic_ndb.test
  mysql-test/suite/parts/t/partition_bit_ndb.test
  mysql-test/suite/parts/t/partition_engine_ndb.test
  mysql-test/suite/parts/t/partition_int_ndb.test
  mysql-test/suite/parts/t/partition_syntax_ndb.test
  mysql-test/suite/parts/t/partition_value_ndb.test
  mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
  mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
  mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test
  mysql-test/t/group_min_max_innodb.test
  mysql-test/t/max_user_connections_func.test
  mysql-test/t/mysqltest.test
  mysql-test/t/ps_ddl.test
  mysql-test/t/ps_ddl1.test
  mysql-test/t/sp-error.test
  mysql-test/t/subselect.test
  mysys/default.c
  sql/field.cc
  sql/field.h
  sql/ha_partition.cc
  sql/ha_partition.h
  sql/item_subselect.cc
  sql/log_event.cc
  sql/rpl_utility.cc
  sql/slave.cc
  sql/slave.h
  sql/sp_cache.cc
  sql/sp_cache.h
  sql/sql_insert.cc
  sql/sql_prepare.cc
  sql/sql_select.cc
  sql/sql_yacc.yy

=== modified file 'mysql-test/r/backup_myisam2.result'
--- a/mysql-test/r/backup_myisam2.result	2008-07-02 07:53:34 +0000
+++ b/mysql-test/r/backup_myisam2.result	2008-07-14 15:33:03 +0000
@@ -56,6 +56,18 @@ Table	Checksum
 mysqltest.t1	1728069308
 
 connection default: cleanup
+SET DEBUG_SYNC= 'RESET';
+
+#
+# Bug#38045 - Backup, MyISAM and file system encoding
+#
+CREATE TABLE `äöüߣå` (id SERIAL) ENGINE=MyISAM;
+BACKUP DATABASE mysqltest TO 'test.ba';
+backup_id
+#
+DROP TABLE `äöüߣå`;
+
+# final cleanup
 USE test;
 DROP DATABASE mysqltest;
 SET DEBUG_SYNC= 'RESET';

=== modified file 'mysql-test/t/backup_myisam2.test'
--- a/mysql-test/t/backup_myisam2.test	2008-07-02 07:53:34 +0000
+++ b/mysql-test/t/backup_myisam2.test	2008-07-14 15:33:03 +0000
@@ -75,14 +75,30 @@ SET DEBUG_SYNC= 'now SIGNAL bup_finish';
 
     disconnect backup;
 
+--echo
+--echo connection default: cleanup
+connection default;
+--remove_file $MYSQLTEST_VARDIR/master-data/test.ba
+SET DEBUG_SYNC= 'RESET';
+
+
+--echo
+--echo #
+--echo # Bug#38045 - Backup, MyISAM and file system encoding
+--echo #
+CREATE TABLE `äöüߣå` (id SERIAL) ENGINE=MyISAM;
+--replace_column 1 #
+BACKUP DATABASE mysqltest TO 'test.ba';
+DROP TABLE `äöüߣå`;
+--remove_file $MYSQLTEST_VARDIR/master-data/test.ba
+
+
 #
 # Cleanup from this test case
 #
 --echo
---echo connection default: cleanup
-connection default;
+--echo # final cleanup
 USE test;
 DROP DATABASE mysqltest;
---remove_file $MYSQLTEST_VARDIR/master-data/test.ba
 SET DEBUG_SYNC= 'RESET';
 

=== modified file 'storage/myisam/myisam_backup_engine.cc'
--- a/storage/myisam/myisam_backup_engine.cc	2008-07-08 20:18:10 +0000
+++ b/storage/myisam/myisam_backup_engine.cc	2008-07-14 15:33:03 +0000
@@ -131,8 +131,9 @@ protected:
 
 Myisam_table_ref::Myisam_table_ref(const Table_ref &tbl)
 {
-  const char *db_arg= tbl.db().name().ptr();
-  const char *name_arg= tbl.name().ptr();
+  int error= 0;
+  char path[FN_REFLEN];
+
   /**
     We keep local copies of the db and name. This is because during restore,
     the Table_ref is apparently modified before the Table_restore is done
@@ -143,22 +144,28 @@ Myisam_table_ref::Myisam_table_ref(const
     and this will save memory.
     As Rafal is changing relevant code now, it may go away.
   */
-  db.append(db_arg);
-  name.append(name_arg);
+  if (db.append(tbl.db().name()))
+    error= 1;
+  if (name.append(tbl.name()))
+    error= 1;
+  /*
+    Note: when we repair the table, we use open_temporary_table() which
+    requires db and table name separated. The internal_name is the
+    translated table name with ASCII characters only.
+  */
+  (void) tbl.internal_name(path, sizeof(path));
+  if (file_name.append(path))
+    error= 1;
   /*
-    Note: this way below will break with non-ASCII characters;
-    what driver should be passed is what engine used to create the table, ie
-    output of build_table_filename().
-    Just replace "building" with "bûilding" in backup.test to see issues.
-    This is remembered in WL#4060.
-
-    But note, when we repair the table, we use open_temporary_table() which
-    requires db and table name separated.
-  */
-  file_name.append("./");
-  file_name.append(db_arg);
-  file_name.append("/");
-  file_name.append(name_arg);
+    If one of the string allocations failed, clear all. This should be
+    noticed later, when we try to use the information.
+  */
+  if (error)
+  {
+    db.set("", 0, system_charset_info);
+    name.set("", 0, system_charset_info);
+    file_name.set("", 0, system_charset_info);
+  }
 }
 
 
@@ -538,15 +545,20 @@ result_t Backup::begin(const size_t)
   /* Build the hash of tables for the MyISAM layer (mi_backup_log.c etc) */
   for (uint n=0 ; n < m_tables.count() ; n++ )
   {
+    char path[FN_REFLEN];
     char unique_file_name[FN_REFLEN], *str;
     size_t str_len;
     ::LEX_STRING *hash_key;
 
-    my_realpath(unique_file_name,
-                fn_format(unique_file_name,m_tables[n].name().ptr(),
-                          m_tables[n].db().name().ptr(),
-                          MI_NAME_IEXT,
-                          MY_UNPACK_FILENAME), MYF(MY_WME));
+    /*
+      The internal_name is the translated table name with ASCII
+      characters only.
+    */
+    (void) m_tables[n].internal_name(path, sizeof(path));
+    if (my_realpath(unique_file_name,
+                    fn_format(unique_file_name, path, "", MI_NAME_IEXT,
+                              MY_UNPACK_FILENAME), MYF(MY_WME)))
+        SET_STATE_TO_ERROR_AND_DBUG_RETURN;
     str_len= strlen(unique_file_name);
     my_multi_malloc(MYF(MY_WME),
                     &hash_key, sizeof(*hash_key),

Thread
bzr push into mysql-6.0-backup branch (ingo.struewing:2663) Ingo Struewing14 Jul