2833 Anurag Shekhar 2009-03-09 [merge]
merging with latest changes.
added:
mysql-test/suite/binlog/r/binlog_sql_mode.result
mysql-test/suite/binlog/t/binlog_sql_mode.test
mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result
mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test
modified:
mysql-test/r/lock.result
mysql-test/r/ps.result
mysql-test/r/skip_name_resolve.result
mysql-test/r/strict.result
mysql-test/r/variables.result
mysql-test/suite/binlog/r/binlog_unsafe.result
mysql-test/suite/binlog/t/binlog_unsafe.test
mysql-test/suite/funcs_1/r/is_columns_innodb.result
mysql-test/suite/funcs_1/r/is_columns_memory.result
mysql-test/suite/funcs_1/r/is_columns_myisam.result
mysql-test/suite/funcs_1/r/myisam_views.result
mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result
mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result
mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
mysql-test/suite/sys_vars/r/concurrent_insert_basic.result
mysql-test/suite/sys_vars/r/connect_timeout_basic.result
mysql-test/suite/sys_vars/r/default_week_format_basic.result
mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result
mysql-test/suite/sys_vars/r/div_precision_increment_basic.result
mysql-test/suite/sys_vars/r/expire_logs_days_basic.result
mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result
mysql-test/suite/sys_vars/r/interactive_timeout_basic.result
mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result
mysql-test/suite/sys_vars/r/max_binlog_size_basic.result
mysql-test/suite/sys_vars/r/max_connections_basic.result
mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result
mysql-test/suite/sys_vars/r/max_error_count_basic.result
mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result
mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result
mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result
mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result
mysql-test/suite/sys_vars/r/max_sort_length_basic.result
mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result
mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result
mysql-test/suite/sys_vars/r/net_buffer_length_basic.result
mysql-test/suite/sys_vars/r/net_read_timeout_basic.result
mysql-test/suite/sys_vars/r/net_write_timeout_basic.result
mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result
mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result
mysql-test/suite/sys_vars/r/read_buffer_size_basic.result
mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result
mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result
mysql-test/suite/sys_vars/r/slow_launch_time_basic.result
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result
mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result
mysql-test/suite/sys_vars/r/table_open_cache_basic.result
mysql-test/t/ddl_i18n_koi8r.test
mysql-test/t/ddl_i18n_utf8.test
mysql-test/t/drop.test
mysql-test/t/lock.test
mysql-test/t/skip_name_resolve.test
mysql-test/t/strict.test
mysql-test/t/variables.test
sql/item_func.cc
sql/log.cc
sql/mysqld.cc
sql/rpl_record.cc
sql/set_var.cc
sql/share/errmsg.txt
sql/sp.cc
sql/sql_cache.cc
sql/sql_class.cc
sql/sql_class.h
sql/sql_lex.cc
sql/sql_lex.h
sql/sql_parse.cc
sql/sql_show.cc
sql/sql_table.cc
sql/sql_yacc.yy
sql/unireg.cc
=== modified file 'mysql-test/r/merge.result'
--- a/mysql-test/r/merge.result 2009-02-12 10:25:12 +0000
+++ b/mysql-test/r/merge.result 2009-03-04 09:18:07 +0000
@@ -2103,4 +2103,16 @@ a
UNLOCK TABLES;
# drop the created tables
DROP TABLE t1, t2, t3;
+# insert duplicate value in child table while merge table doesn't have key
+create table t1 (
+col1 int(10),
+primary key (col1)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+CREATE TABLE m1 (
+col1 int(10) NOT NULL
+) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(t1);
+insert into m1 (col1) values (1);
+insert into m1 (col1) values (1);
+ERROR 23000: Duplicate entry '' for key '*UNKNOWN*'
+drop table m1, t1;
End of 5.1 tests
=== modified file 'mysql-test/t/merge.test'
--- a/mysql-test/t/merge.test 2009-02-12 10:25:12 +0000
+++ b/mysql-test/t/merge.test 2009-03-04 09:18:07 +0000
@@ -1496,4 +1496,22 @@ UNLOCK TABLES;
--echo # drop the created tables
DROP TABLE t1, t2, t3;
+#
+# Bug #41305 server crashes when inserting duplicate row into a merge table
+#
+--echo # insert duplicate value in child table while merge table doesn't have key
+create table t1 (
+ col1 int(10),
+ primary key (col1)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+CREATE TABLE m1 (
+ col1 int(10) NOT NULL
+) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(t1);
+
+insert into m1 (col1) values (1);
+--error ER_DUP_ENTRY
+insert into m1 (col1) values (1);
+
+drop table m1, t1;
--echo End of 5.1 tests
=== modified file 'storage/myisammrg/ha_myisammrg.cc'
--- a/storage/myisammrg/ha_myisammrg.cc 2009-02-12 11:12:07 +0000
+++ b/storage/myisammrg/ha_myisammrg.cc 2009-03-04 09:18:07 +0000
@@ -872,6 +872,16 @@ int ha_myisammrg::info(uint flag)
table->s->crashed= 1;
#endif
stats.data_file_length= mrg_info.data_file_length;
+ if (mrg_info.errkey >= table_share->keys)
+ {
+ /*
+ If value of errkey is higher than the number of keys
+ on the table set errkey to MAX_KEY. This will be
+ treated as unknown key case and error message generator
+ won't try to locate key causing segmentation fault.
+ */
+ mrg_info.errkey= MAX_KEY;
+ }
errkey= mrg_info.errkey;
table->s->keys_in_use.set_prefix(table->s->keys);
stats.mean_rec_length= mrg_info.reclength;
| Thread |
|---|
| • bzr push into mysql-5.1-bugteam branch (anurag.shekhar:2833) | Anurag Shekhar | 9 Mar |