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 Struewing | 14 Jul |