MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Sergey Glukhov Date:June 19 2008 10:50am
Subject:bzr commit into mysql-5.0 branch (gluh:2640) Bug#37301
View as plain text  
#At file:///home/gluh/MySQL/bazaar/mysql-5.0.37301/

 2640 Sergey Glukhov	2008-06-19
      Bug#37301 Length and Max_length differ with no obvious reason(2nd version)
      Length value is the length of the field,
      Max_length is the length of the field value.
      So Max_length can not be more than Length.
      The fix: fixed calculation of the Item_empty_string item length
modified:
  mysql-test/r/ps_1general.result
  mysql-test/r/ps_2myisam.result
  mysql-test/r/ps_3innodb.result
  mysql-test/r/ps_4heap.result
  mysql-test/r/ps_5merge.result
  mysql-test/r/ps_6bdb.result
  mysql-test/r/ps_7ndb.result
  mysql-test/r/show_check.result
  mysql-test/t/show_check.test
  sql/item.h
  sql/sql_show.cc
  tests/mysql_client_test.c

per-file messages:
  mysql-test/r/ps_1general.result
    result fix
  mysql-test/r/ps_2myisam.result
    result fix
  mysql-test/r/ps_3innodb.result
    result fix
  mysql-test/r/ps_4heap.result
    result fix
  mysql-test/r/ps_5merge.result
    result fix
  mysql-test/r/ps_6bdb.result
    result fix
  mysql-test/r/ps_7ndb.result
    result fix
  mysql-test/r/show_check.result
    test result
  mysql-test/t/show_check.test
    test case
  sql/item.h
    fixed calculation of the item length
  sql/sql_show.cc
    removed unnecessary code
  tests/mysql_client_test.c
    test fix
=== modified file 'mysql-test/r/ps_1general.result'
--- a/mysql-test/r/ps_1general.result	2007-09-20 08:54:46 +0000
+++ b/mysql-test/r/ps_1general.result	2008-06-19 10:50:09 +0000
@@ -468,7 +468,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	14	N	1	31	8
@@ -484,7 +484,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	5	Y	0	31	8
 def					possible_keys	253	4096	7	Y	0	31	8
 def					key	253	64	7	Y	0	31	8
-def					key_len	253	1365	1	Y	0	31	8
+def					key_len	253	4096	1	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	27	N	1	31	8

=== modified file 'mysql-test/r/ps_2myisam.result'
--- a/mysql-test/r/ps_2myisam.result	2007-12-06 07:46:01 +0000
+++ b/mysql-test/r/ps_2myisam.result	2008-06-19 10:50:09 +0000
@@ -1158,7 +1158,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8

=== modified file 'mysql-test/r/ps_3innodb.result'
--- a/mysql-test/r/ps_3innodb.result	2007-12-06 07:46:01 +0000
+++ b/mysql-test/r/ps_3innodb.result	2008-06-19 10:50:09 +0000
@@ -1158,7 +1158,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8

=== modified file 'mysql-test/r/ps_4heap.result'
--- a/mysql-test/r/ps_4heap.result	2007-12-06 07:46:01 +0000
+++ b/mysql-test/r/ps_4heap.result	2008-06-19 10:50:09 +0000
@@ -1159,7 +1159,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8

=== modified file 'mysql-test/r/ps_5merge.result'
--- a/mysql-test/r/ps_5merge.result	2007-12-06 07:46:01 +0000
+++ b/mysql-test/r/ps_5merge.result	2008-06-19 10:50:09 +0000
@@ -1201,7 +1201,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8
@@ -4223,7 +4223,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8

=== modified file 'mysql-test/r/ps_6bdb.result'
--- a/mysql-test/r/ps_6bdb.result	2007-12-06 07:46:01 +0000
+++ b/mysql-test/r/ps_6bdb.result	2008-06-19 10:50:09 +0000
@@ -1158,7 +1158,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8

=== modified file 'mysql-test/r/ps_7ndb.result'
--- a/mysql-test/r/ps_7ndb.result	2007-12-06 07:46:01 +0000
+++ b/mysql-test/r/ps_7ndb.result	2008-06-19 10:50:09 +0000
@@ -1158,7 +1158,7 @@ def					table	253	64	2	Y	0	31	8
 def					type	253	10	3	Y	0	31	8
 def					possible_keys	253	4096	0	Y	0	31	8
 def					key	253	64	0	Y	0	31	8
-def					key_len	253	1365	0	Y	0	31	8
+def					key_len	253	4096	0	Y	0	31	8
 def					ref	253	1024	0	Y	0	31	8
 def					rows	8	10	1	Y	32928	0	63
 def					Extra	253	255	0	N	1	31	8

=== modified file 'mysql-test/r/show_check.result'
--- a/mysql-test/r/show_check.result	2007-09-20 08:54:46 +0000
+++ b/mysql-test/r/show_check.result	2008-06-19 10:50:09 +0000
@@ -12,51 +12,51 @@ insert into t1 values (1,2,2),(2,2,3),(3
 -- after Bug#29394 is implemented.
 check table t1 fast;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	5	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	27	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	5	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	27	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	Table is already up to date
 check table t1 fast;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	5	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	27	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	5	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	27	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	Table is already up to date
 check table t1 changed;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	5	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	5	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	OK
 insert into t1 values (5,5,5);
 check table t1 changed;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	5	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	5	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	OK
 check table t1 medium;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	5	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	5	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	OK
 check table t1 extended;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	5	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	5	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	check	status	OK
 show index from t1;
@@ -84,10 +84,10 @@ ERROR 23000: Duplicate entry '5' for key
 -- after Bug#29394 is implemented.
 optimize table t1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	8	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	8	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	optimize	status	OK
 optimize table t1;
@@ -154,10 +154,10 @@ insert into t1 values (1,1,1,0),(1,1,2,0
 -- after Bug#29394 is implemented.
 analyze table t1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	7	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	7	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	analyze	status	OK
 show index from t1;
@@ -171,10 +171,10 @@ t1	0	PRIMARY	4	f4	A	18	NULL	NULL		BTREE	
 -- after Bug#29394 is implemented.
 repair table t1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	42	7	Y	0	31	8
-def					Op	253	3	6	Y	0	31	8
-def					Msg_type	253	3	6	Y	0	31	8
-def					Msg_text	253	85	2	Y	0	31	8
+def					Table	253	128	7	Y	0	31	8
+def					Op	253	10	6	Y	0	31	8
+def					Msg_type	253	10	6	Y	0	31	8
+def					Msg_text	253	255	2	Y	0	31	8
 Table	Op	Msg_type	Msg_text
 test.t1	repair	status	OK
 show index from t1;
@@ -788,8 +788,8 @@ latin1_bin	latin1	47		Yes	1
 ----------------------------------------------------------------
 SHOW CREATE DATABASE mysqltest1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Database	253	63	10	N	1	31	33
-def					Create Database	253	1023	69	N	1	31	33
+def					Database	253	192	10	N	1	31	33
+def					Create Database	253	3072	69	N	1	31	33
 Database	Create Database
 mysqltest1	CREATE DATABASE `mysqltest1` /*!40100 DEFAULT CHARACTER SET latin1 */
 ----------------------------------------------------------------
@@ -801,8 +801,8 @@ mysqltest1
 ----------------------------------------------------------------
 SHOW CREATE TABLE t1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Table	253	63	2	N	1	31	33
-def					Create Table	253	1023	103	N	1	31	33
+def					Table	253	192	2	N	1	31	33
+def					Create Table	253	3072	103	N	1	31	33
 Table	Create Table
 t1	CREATE TABLE `t1` (
   `c` int(11) NOT NULL,
@@ -959,8 +959,8 @@ NULL	test	t1_bi	INSERT	NULL	test	t1	NULL
 ----------------------------------------------------------------
 SHOW CREATE VIEW v1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					View	253	63	2	N	1	31	33
-def					Create View	253	1023	103	N	1	31	33
+def					View	253	192	2	N	1	31	33
+def					Create View	253	3072	103	N	1	31	33
 View	Create View
 v1	CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1`
 ----------------------------------------------------------------
@@ -981,9 +981,9 @@ NULL	test	v1	/* ALGORITHM=UNDEFINED */ s
 ----------------------------------------------------------------
 SHOW CREATE PROCEDURE p1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Procedure	253	63	2	N	1	31	33
+def					Procedure	253	192	2	N	1	31	33
 def					sql_mode	253	0	0	N	1	31	33
-def					Create Procedure	253	2046	59	Y	0	31	33
+def					Create Procedure	253	6144	59	Y	0	31	33
 Procedure	sql_mode	Create Procedure
 p1		CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
 SELECT 1
@@ -1033,9 +1033,9 @@ p1	NULL	test	p1	PROCEDURE	NULL	SQL	SELEC
 ----------------------------------------------------------------
 SHOW CREATE FUNCTION f1;
 Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
-def					Function	253	63	2	N	1	31	33
+def					Function	253	192	2	N	1	31	33
 def					sql_mode	253	0	0	N	1	31	33
-def					Create Function	253	2046	74	Y	0	31	33
+def					Create Function	253	6144	74	Y	0	31	33
 Function	sql_mode	Create Function
 f1		CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
 RETURN 1
@@ -1141,4 +1141,34 @@ Slow_queries	2
 show variables like 'myisam_recover_options';
 Variable_name	Value
 myisam_recover_options	OFF
+CREATE TABLE t1 (
+Codigo int(10) unsigned NOT NULL auto_increment,
+Nombre varchar(255) default NULL,
+Telefono varchar(255) default NULL,
+Observaciones longtext,
+Direccion varchar(255) default NULL,
+Dni varchar(255) default NULL,
+CP int(11) default NULL,
+Provincia varchar(255) default NULL,
+Poblacion varchar(255) default NULL,
+PRIMARY KEY  (Codigo)
+) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+show create table t1;
+Catalog	Database	Table	Table_alias	Column	Column_alias	Type	Length	Max length	Is_null	Flags	Decimals	Charsetnr
+def					Table	253	64	2	N	1	31	7
+def					Create Table	253	1024	446	N	1	31	7
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `Codigo` int(10) unsigned NOT NULL auto_increment,
+  `Nombre` varchar(255) default NULL,
+  `Telefono` varchar(255) default NULL,
+  `Observaciones` longtext,
+  `Direccion` varchar(255) default NULL,
+  `Dni` varchar(255) default NULL,
+  `CP` int(11) default NULL,
+  `Provincia` varchar(255) default NULL,
+  `Poblacion` varchar(255) default NULL,
+  PRIMARY KEY  (`Codigo`)
+) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
+drop table t1;
 End of 5.0 tests

=== modified file 'mysql-test/t/show_check.test'
--- a/mysql-test/t/show_check.test	2007-08-02 13:23:23 +0000
+++ b/mysql-test/t/show_check.test	2008-06-19 10:50:09 +0000
@@ -844,4 +844,24 @@ show status like 'slow_queries';
 #
 show variables like 'myisam_recover_options';
 
+#
+# Bug#37301 Length and Max_length differ with no obvious reason
+#
+CREATE TABLE t1 (
+ Codigo int(10) unsigned NOT NULL auto_increment,
+ Nombre varchar(255) default NULL,
+ Telefono varchar(255) default NULL,
+ Observaciones longtext,
+ Direccion varchar(255) default NULL,
+ Dni varchar(255) default NULL,
+ CP int(11) default NULL,
+ Provincia varchar(255) default NULL,
+ Poblacion varchar(255) default NULL,
+ PRIMARY KEY  (Codigo)
+) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
+--enable_metadata
+show create table t1;
+--disable_metadata
+drop table t1;
+
 --echo End of 5.0 tests

=== modified file 'sql/item.h'
--- a/sql/item.h	2008-03-12 07:59:15 +0000
+++ b/sql/item.h	2008-06-19 10:50:09 +0000
@@ -1817,7 +1817,7 @@ class Item_empty_string :public Item_str
 public:
   Item_empty_string(const char *header,uint length, CHARSET_INFO *cs= NULL) :
     Item_string("",0, cs ? cs : &my_charset_utf8_general_ci)
-    { name=(char*) header; max_length= cs ? length * cs->mbmaxlen : length; }
+    { name=(char*) header; max_length= length * collation.collation->mbmaxlen; }
   void make_field(Send_field *field);
 };
 

=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc	2008-03-19 13:32:28 +0000
+++ b/sql/sql_show.cc	2008-06-19 10:50:09 +0000
@@ -3666,12 +3666,10 @@ TABLE *create_schema_table(THD *thd, TAB
       /* Don't let unimplemented types pass through. Could be a grave error. */
       DBUG_ASSERT(fields_info->field_type == MYSQL_TYPE_STRING);
 
-      /* this should be changed when Item_empty_string is fixed(in 4.1) */
-      if (!(item= new Item_empty_string("", 0, cs)))
+      if (!(item= new Item_empty_string("", fields_info->field_length, cs)))
       {
         DBUG_RETURN(0);
       }
-      item->max_length= fields_info->field_length * cs->mbmaxlen;
       item->set_name(fields_info->field_name,
                      strlen(fields_info->field_name), cs);
       break;

=== modified file 'tests/mysql_client_test.c'
--- a/tests/mysql_client_test.c	2008-05-27 11:33:08 +0000
+++ b/tests/mysql_client_test.c	2008-06-19 10:50:09 +0000
@@ -7578,9 +7578,7 @@ static void test_explain_bug()
   else
   {
     verify_prepare_field(result, 6, "key_len", "", MYSQL_TYPE_VAR_STRING, "", 
-                         "", "",
-                         NAME_LEN*MAX_KEY / my_charset_utf8_general_ci.mbmaxlen,
-                         0);
+                         "", "", NAME_LEN*MAX_KEY, 0);
   }
 
   verify_prepare_field(result, 7, "ref", "", MYSQL_TYPE_VAR_STRING,

Thread
bzr commit into mysql-5.0 branch (gluh:2640) Bug#37301Sergey Glukhov19 Jun