List:Commits« Previous MessageNext Message »
From:Tatiana A. Nurnberg Date:December 30 2008 3:52pm
Subject:bzr push into mysql-6.0-bugteam branch (azundris:2940 to 2941)
View as plain text  
 2941 Tatiana A. Nurnberg	2008-12-30 [merge]
      auto-merge

 2940 Tatiana A. Nurnberg	2008-12-30 [merge]
      auto-merge
removed:
  mysql-test/suite/parts/r/partition_bit_ndb.result
  mysql-test/suite/parts/t/partition_bit_ndb.test
  mysql-test/suite/parts/t/partition_sessions.test
  mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc
  mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result
  mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result
  mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test
  mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test
  mysql-test/t/log_bin_trust_function_creators_func-master.opt
  mysql-test/t/rpl_init_slave_func-slave.opt
added:
  extra/libevent/CMakeLists.txt
  extra/libevent/WIN32-Code/
  extra/libevent/WIN32-Code/config.h
  extra/libevent/WIN32-Code/misc.c
  extra/libevent/WIN32-Code/misc.h
  extra/libevent/WIN32-Code/tree.h
  extra/libevent/WIN32-Code/win32.c
  mysql-test/include/cleanup_fake_relay_log.inc
  mysql-test/include/have_one-thread-per-connection.inc
  mysql-test/include/have_simple_parser.inc
  mysql-test/include/setup_fake_relay_log.inc
  mysql-test/include/wait_condition_sp.inc
  mysql-test/r/fulltext_plugin.result
  mysql-test/r/have_simple_parser.require
  mysql-test/r/innodb_bug38231.result
  mysql-test/r/innodb_bug39438.result
  mysql-test/r/partition_innodb_semi_consistent.result
  mysql-test/r/query_cache_28249.result
  mysql-test/std_data/bug40482-bin.000001
  mysql-test/suite/binlog/r/binlog_innodb_row.result
  mysql-test/suite/binlog/t/binlog_innodb_row.test
  mysql-test/suite/rpl/r/rpl_binlog_corruption.result
  mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt
  mysql-test/suite/rpl/t/rpl_binlog_corruption.test
  mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
  mysql-test/suite/sys_vars/t/tmp_table_size_basic.test
  mysql-test/t/fulltext_plugin-master.opt
  mysql-test/t/fulltext_plugin.test
  mysql-test/t/innodb_bug38231.test
  mysql-test/t/innodb_bug39438-master.opt
  mysql-test/t/innodb_bug39438.test
  mysql-test/t/partition_innodb_semi_consistent-master.opt
  mysql-test/t/partition_innodb_semi_consistent.test
  mysql-test/t/query_cache_28249.test
  sql/share/errmsg-cnv.sh
  sql/share/errmsg-utf8.txt
modified:
  CMakeLists.txt
  client/mysql.cc
  client/mysql_upgrade.c
  dbug/dbug.c
  extra/libevent/Makefile.am
  extra/libevent/buffer.c
  extra/libevent/evbuffer.c
  extra/libevent/evutil.c
  extra/libevent/evutil.h
  extra/resolve_stack_dump.c
  extra/yassl/include/openssl/ssl.h
  include/config-win.h
  include/m_ctype.h
  include/my_dbug.h
  include/my_global.h
  libmysql/libmysql.c
  libmysql/libmysql.def
  libmysqld/examples/CMakeLists.txt
  libmysqld/lib_sql.cc
  libmysqld/libmysqld.def
  mysql-test/include/commit.inc
  mysql-test/include/index_merge1.inc
  mysql-test/include/linux_sys_vars.inc
  mysql-test/include/windows_sys_vars.inc
  mysql-test/lib/mtr_report.pl
  mysql-test/mysql-test-run.pl
  mysql-test/r/alter_table.result
  mysql-test/r/archive.result
  mysql-test/r/binlog_index.result
  mysql-test/r/commit_1innodb.result
  mysql-test/r/create.result
  mysql-test/r/csv.result
  mysql-test/r/ctype_latin2_ch.result
  mysql-test/r/ctype_ldml.result
  mysql-test/r/ctype_ucs.result
  mysql-test/r/events_scheduling.result
  mysql-test/r/fulltext.result
  mysql-test/r/func_if.result
  mysql-test/r/func_str.result
  mysql-test/r/func_time.result
  mysql-test/r/grant.result
  mysql-test/r/index_merge_myisam.result
  mysql-test/r/information_schema.result
  mysql-test/r/innodb-autoinc.result
  mysql-test/r/innodb_mysql.result
  mysql-test/r/log_bin_trust_function_creators_func.result
  mysql-test/r/myisampack.result
  mysql-test/r/mysql.result
  mysql-test/r/partition.result
  mysql-test/r/partition_datatype.result
  mysql-test/r/partition_mgm.result
  mysql-test/r/partition_mgm_err.result
  mysql-test/r/query_cache.result
  mysql-test/r/rpl_init_slave_func.result
  mysql-test/r/select.result
  mysql-test/r/show_check.result
  mysql-test/r/status.result
  mysql-test/r/type_bit.result
  mysql-test/r/type_float.result
  mysql-test/r/warnings_engine_disabled.result
  mysql-test/r/xml.result
  mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
  mysql-test/suite/funcs_1/datadict/basics_mixed1.inc
  mysql-test/suite/funcs_1/datadict/datadict_priv.inc
  mysql-test/suite/funcs_1/r/is_basics_mixed.result
  mysql-test/suite/funcs_1/r/is_columns_is.result
  mysql-test/suite/funcs_1/r/is_engines.result
  mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
  mysql-test/suite/funcs_1/r/processlist_priv_ps.result
  mysql-test/suite/funcs_1/r/processlist_val_ps.result
  mysql-test/suite/funcs_1/r/storedproc.result
  mysql-test/suite/funcs_1/storedproc/param_check.inc
  mysql-test/suite/funcs_1/t/is_basics_mixed.test
  mysql-test/suite/funcs_2/t/disabled.def
  mysql-test/suite/ndb/t/disabled.def
  mysql-test/suite/parts/r/partition_bit_innodb.result
  mysql-test/suite/parts/r/partition_bit_myisam.result
  mysql-test/suite/parts/r/partition_mgm_lc0_archive.result
  mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result
  mysql-test/suite/parts/r/partition_mgm_lc0_memory.result
  mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result
  mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result
  mysql-test/suite/parts/r/partition_mgm_lc1_archive.result
  mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result
  mysql-test/suite/parts/r/partition_mgm_lc1_memory.result
  mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result
  mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result
  mysql-test/suite/parts/r/partition_mgm_lc2_archive.result
  mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result
  mysql-test/suite/parts/r/partition_mgm_lc2_memory.result
  mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result
  mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result
  mysql-test/suite/parts/r/partition_special_innodb.result
  mysql-test/suite/parts/t/disabled.def
  mysql-test/suite/parts/t/partition_special_innodb.test
  mysql-test/suite/parts/t/partition_value_innodb.test
  mysql-test/suite/parts/t/partition_value_myisam.test
  mysql-test/suite/parts/t/partition_value_ndb.test
  mysql-test/suite/rpl/r/rpl_heartbeat.result
  mysql-test/suite/rpl/r/rpl_packet.result
  mysql-test/suite/rpl/r/rpl_row_create_table.result
  mysql-test/suite/rpl/r/rpl_slave_skip.result
  mysql-test/suite/rpl/r/rpl_trigger.result
  mysql-test/suite/rpl/t/disabled.def
  mysql-test/suite/rpl/t/rpl_packet.test
  mysql-test/suite/rpl/t/rpl_row_create_table.test
  mysql-test/suite/rpl/t/rpl_slave_skip.test
  mysql-test/suite/rpl/t/rpl_trigger.test
  mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc
  mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
  mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result
  mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
  mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
  mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
  mysql-test/suite/sys_vars/t/disabled.def
  mysql-test/t/alter_table.test
  mysql-test/t/archive.test
  mysql-test/t/create.test
  mysql-test/t/csv.test
  mysql-test/t/ctype_latin2_ch.test
  mysql-test/t/ctype_ldml.test
  mysql-test/t/ctype_ucs.test
  mysql-test/t/disabled.def
  mysql-test/t/events_scheduling.test
  mysql-test/t/fulltext.test
  mysql-test/t/func_if.test
  mysql-test/t/func_str.test
  mysql-test/t/func_time.test
  mysql-test/t/grant.test
  mysql-test/t/information_schema.test
  mysql-test/t/innodb-autoinc.test
  mysql-test/t/innodb_mysql.test
  mysql-test/t/log_bin_trust_function_creators_func.test
  mysql-test/t/myisampack.test
  mysql-test/t/mysql.test
  mysql-test/t/partition.test
  mysql-test/t/partition_innodb_stmt.test
  mysql-test/t/partition_mgm.test
  mysql-test/t/query_cache.test
  mysql-test/t/rpl_init_slave_func.test
  mysql-test/t/select.test
  mysql-test/t/status.test
  mysql-test/t/thread_cache_size_func.test
  mysql-test/t/type_bit.test
  mysql-test/t/type_float.test
  mysql-test/t/warnings_engine_disabled.test
  mysql-test/t/xml.test
  mysys/charset.c
  mysys/my_thr_init.c
  sql/CMakeLists.txt
  sql/field.cc
  sql/field.h
  sql/ha_partition.cc
  sql/ha_partition.h
  sql/item.cc
  sql/item_cmpfunc.cc
  sql/item_func.h
  sql/item_strfunc.cc
  sql/item_sum.cc
  sql/item_timefunc.cc
  sql/item_timefunc.h
  sql/log.cc
  sql/log.h
  sql/log_event.cc
  sql/log_event.h
  sql/mysql_priv.h
  sql/mysqld.cc
  sql/opt_range.cc
  sql/partition_info.cc
  sql/rpl_constants.h
  sql/scheduler.cc
  sql/set_var.cc
  sql/share/errmsg.txt
  sql/sp.cc
  sql/spatial.h
  sql/sql_acl.cc
  sql/sql_base.cc
  sql/sql_cursor.cc
  sql/sql_locale.cc
  sql/sql_manager.cc
  sql/sql_parse.cc
  sql/sql_partition.cc
  sql/sql_plugin.cc
  sql/sql_plugin.h
  sql/sql_select.cc
  sql/sql_select.h
  sql/sql_show.cc
  sql/sql_table.cc
  sql/sql_yacc.yy
  sql/table.cc
  sql/table.h
  storage/archive/ha_archive.cc
  storage/csv/ha_tina.cc
  storage/federated/ha_federated.cc
  storage/heap/ha_heap.cc
  storage/innobase/btr/btr0sea.c
  storage/innobase/buf/buf0lru.c
  storage/innobase/dict/dict0dict.c
  storage/innobase/dict/dict0mem.c
  storage/innobase/handler/ha_innodb.cc
  storage/innobase/handler/ha_innodb.h
  storage/innobase/include/btr0sea.h
  storage/innobase/include/dict0dict.h
  storage/innobase/include/dict0mem.h
  storage/innobase/include/ha_prototypes.h
  storage/innobase/include/lock0lock.h
  storage/innobase/include/row0mysql.h
  storage/innobase/include/sync0sync.ic
  storage/innobase/lock/lock0lock.c
  storage/innobase/row/row0mysql.c
  storage/innobase/row/row0sel.c
  storage/myisam/ft_boolean_search.c
  strings/ctype-czech.c
  strings/ctype.c
  strings/xml.c
  tests/mysql_client_test.c

=== modified file 'include/mysql_com.h'
--- a/include/mysql_com.h	2008-11-06 18:39:27 +0000
+++ b/include/mysql_com.h	2008-12-01 06:17:16 +0000
@@ -33,7 +33,7 @@
 /*
   Maximum length of comments
 */
-#define TABLE_COMMENT_INLINE_MAXLEN 180 /* pre 6.0: 60 characters */
+#define TABLE_COMMENT_INLINE_MAXLEN 180 /* pre 6.0: 60 (3-byte) characters */
 #define TABLE_COMMENT_MAXLEN 2048
 #define COLUMN_COMMENT_MAXLEN 1024
 #define INDEX_COMMENT_MAXLEN 1024

=== modified file 'mysql-test/r/strict.result'
--- a/mysql-test/r/strict.result	2008-07-14 12:49:19 +0000
+++ b/mysql-test/r/strict.result	2008-12-01 06:17:16 +0000
@@ -1310,6 +1310,13 @@ t1	CREATE TABLE `t1` (
   `i` int(11) DEFAULT NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='123456789*123456789*123456789*123456789*123456789*123456789*'
 drop table t1;
+CREATE TABLE t3 (f1 INT) COMMENT 'כקבהחןכקבהחןכקבהחןכקבהח×בהחןכקבהחןכקבה+Table	Create Table
+t3	CREATE TABLE `t3` (
+  `f1` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='כקבהחןכקבהחן‘החןכקבהחןכקבה×קבהחן'
+DROP TABLE t3;
 set sql_mode= 'traditional';
 create table t1(col1 tinyint, col2 tinyint unsigned, 
 col3 smallint, col4 smallint unsigned,

=== modified file 'mysql-test/t/strict.test'
--- a/mysql-test/t/strict.test	2008-03-14 22:21:29 +0000
+++ b/mysql-test/t/strict.test	2008-12-01 06:17:16 +0000
@@ -1166,6 +1166,15 @@ show create table t1;
 drop table t1;
 
 #
+# Bug #39591: Crash if table comment is longer than 62 characters
+#
+
+#60 chars, 120 (+1) bytes (UTF-8 with 2-byte chars)
+CREATE TABLE t3 (f1 INT) COMMENT 'כקבהח§×‘החןכקבהחןכקב×כקבהחןכקבהחן';
+SHOW CREATE TABLE t3;
+DROP TABLE t3;
+
+#
 # Bug #26359: Strings becoming truncated and converted to numbers under STRICT mode
 #
 set sql_mode= 'traditional';

=== modified file 'sql/unireg.cc'
--- a/sql/unireg.cc	2008-11-04 08:10:49 +0000
+++ b/sql/unireg.cc	2008-12-01 06:17:16 +0000
@@ -195,6 +195,24 @@ bool mysql_create_frm(THD *thd, const ch
     create_fields.elements;
   create_info->extra_size+= format_section_len;
 
+  /*
+    This gives us the byte-position of the character at
+    (character-position, not byte-position) TABLE_COMMENT_MAXLEN.
+    The trick here is that character-positions start at 0, so the last
+    character in a maximum-allowed length string would be at char-pos
+    MAXLEN-1; charpos MAXLEN will be the position of the terminator.
+    Consequently, bytepos(charpos(MAXLEN)) should be equal to
+    comment[length] (which should also be the terminator, or at least
+    the first byte after the payload in the strict sense). If this is
+    not so (bytepos(charpos(MAXLEN)) comes /before/ the end of the
+    string), the string is too long.
+
+    For additional credit, realise that UTF-8 has 1-3 bytes before 6.0,
+    and 1-4 bytes in 6.0 (6.0 also has UTF-32). This means that the
+    inlined COMMENT supposedly does not exceed 60 (3-byte) character
+    plus terminator, vulgo, 181 bytes.
+  */
+
   tmp_len= system_charset_info->cset->charpos(system_charset_info,
                                               create_info->comment.str,
                                               create_info->comment.str +
@@ -222,7 +240,6 @@ bool mysql_create_frm(THD *thd, const ch
   /*
     If table comment is longer than TABLE_COMMENT_INLINE_MAXLEN bytes,
     store the comment in an extra segment (up to TABLE_COMMENT_MAXLEN bytes).
-    Pre 6.0, the limit was 60 characters, with no extra segment-handling.
   */
   if (create_info->comment.length > TABLE_COMMENT_INLINE_MAXLEN)
   {
@@ -233,15 +250,6 @@ bool mysql_create_frm(THD *thd, const ch
     strmake((char*) forminfo+47, create_info->comment.str ?
             create_info->comment.str : "", create_info->comment.length);
     forminfo[46]=(uchar) create_info->comment.length;
-#ifdef EXTRA_DEBUG
-    /*
-      EXTRA_DEBUG causes strmake() to initialize its buffer behind the
-      payload with a magic value to detect wrong buffer-sizes. We
-      explicitly zero that segment again.
-    */
-    memset((char*) forminfo+47 + forminfo[46], 0,
-           TABLE_COMMENT_INLINE_MAXLEN + 1 - forminfo[46]);
-#endif
   }
 
   if ((file=create_frm(thd, file_name, db, table, reclength, fileinfo,

Thread
bzr push into mysql-6.0-bugteam branch (azundris:2940 to 2941) Tatiana A. Nurnberg30 Dec