List:Internals« Previous MessageNext Message »
From:reggie Date:July 18 2005 1:11pm
Subject:bk commit into 4.1 tree (reggie:1.2342)
View as plain text  
Below is the list of changes that have just been committed into a local
4.1 repository of reggie. When reggie does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2342 05/07/18 07:11:15 reggie@stripped +7 -0
  Merge rburnett@stripped:/home/bk/mysql-4.1
  into  linux.site:/home/reggie/bk/bug7142

  tests/mysql_client_test.c
    1.153 05/07/18 07:10:56 reggie@stripped +0 -0
    Auto merged

  sql/sql_show.cc
    1.200 05/07/18 07:10:54 reggie@stripped +0 -0
    Auto merged

  sql/item.cc
    1.212 05/07/18 07:10:54 reggie@stripped +0 -0
    Auto merged

  mysql-test/r/ps_5merge.result
    1.25 05/07/18 07:10:53 reggie@stripped +0 -0
    Auto merged

  mysql-test/r/ps_4heap.result
    1.25 05/07/18 07:10:52 reggie@stripped +0 -0
    Auto merged

  mysql-test/r/ps_3innodb.result
    1.27 05/07/18 07:10:52 reggie@stripped +0 -0
    Auto merged

  mysql-test/r/ps_2myisam.result
    1.26 05/07/18 07:10:51 reggie@stripped +0 -0
    Auto merged

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	reggie
# Host:	linux.site
# Root:	/home/reggie/bk/bug7142/RESYNC

--- 1.211/sql/item.cc	2005-07-12 08:35:04 -06:00
+++ 1.212/sql/item.cc	2005-07-18 07:10:54 -06:00
@@ -212,15 +212,43 @@
 Item *Item::safe_charset_converter(CHARSET_INFO *tocs)
 {
   /*
+    Allow conversion from and to "binary".
     Don't allow automatic conversion to non-Unicode charsets,
     as it potentially loses data.
   */
-  if (!(tocs->state & MY_CS_UNICODE))
+  if (collation.collation != &my_charset_bin &&
+      tocs != &my_charset_bin &&
+      !(tocs->state & MY_CS_UNICODE))
     return NULL; // safe conversion is not possible
   return new Item_func_conv_charset(this, tocs);
 }
 
 
+/*
+  Created mostly for mysql_prepare_table(). Important
+  when a string ENUM/SET column is described with a numeric default value:
+
+  CREATE TABLE t1(a SET('a') DEFAULT 1);
+
+  We cannot use generic Item::safe_charset_converter(), because
+  the latter returns a non-fixed Item, so val_str() crashes afterwards.
+  Override Item_num method, to return a fixed item.
+*/
+Item *Item_num::safe_charset_converter(CHARSET_INFO *tocs)
+{
+  Item_string *conv;
+  char buf[64];
+  String *s, tmp(buf, sizeof(buf), &my_charset_bin);
+  s= val_str(&tmp);
+  if ((conv= new Item_string(s->ptr(), s->length(), s->charset())))
+  {
+    conv->str_value.copy();
+    conv->str_value.shrink_to_length();
+  }
+  return conv;
+}
+
+
 Item *Item_string::safe_charset_converter(CHARSET_INFO *tocs)
 {
   Item_string *conv;
@@ -889,6 +917,7 @@
   max_length= 0;
   decimals= 0;
   state= NULL_VALUE;
+  item_type= Item::NULL_ITEM;
   DBUG_VOID_RETURN;
 }
 
@@ -1088,6 +1117,7 @@
     to the binary log.
   */
   str_value.set_charset(&my_charset_bin);
+  collation.set(&my_charset_bin, DERIVATION_COERCIBLE);
   state= NO_VALUE;
   maybe_null= 1;
   null_value= 0;
@@ -1335,38 +1365,12 @@
     */
     str_value_ptr.set(str_value.ptr(), str_value.length(),
                       str_value.charset());
+    /* Synchronize item charset with value charset */
+    collation.set(str_value.charset(), DERIVATION_COERCIBLE);
   }
   return rc;
 }
 
-bool Item_param::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
-{
-  DBUG_ASSERT(fixed == 0);
-  SELECT_LEX *cursel= (SELECT_LEX *) thd->lex->current_select;
-
-  /*
-    Parameters in a subselect should mark the subselect as not constant
-    during prepare
-  */
-  if (state == NO_VALUE)
-  {
-    /*
-      SELECT_LEX_UNIT::item set only for subqueries, so test of it presence
-      can be barrier to stop before derived table SELECT or very outer SELECT
-    */
-    for(;
-        cursel->master_unit()->item;
-        cursel= cursel->outer_select())
-    {
-      Item_subselect *subselect_item= cursel->master_unit()->item;
-      subselect_item->used_tables_cache|= OUTER_REF_TABLE_BIT;
-      subselect_item->const_item_cache= 0;
-    }
-  }
-  fixed= 1;
-  return 0;
-}
-
 
 bool Item_param::basic_const_item() const
 {
@@ -2158,6 +2162,20 @@
   return FALSE;
 }
 
+
+Item *Item_varbinary::safe_charset_converter(CHARSET_INFO *tocs)
+{
+  Item_string *conv;
+  String tmp, *str= val_str(&tmp);
+
+  if (!(conv= new Item_string(str->ptr(), str->length(), tocs)))
+    return NULL;
+  conv->str_value.copy();
+  conv->str_value.shrink_to_length();
+  return conv;
+}
+
+
 /*
   Pack data in buffer for sending
 */
@@ -3128,9 +3146,13 @@
   if (fld_type == MYSQL_TYPE_ENUM ||
       fld_type == MYSQL_TYPE_SET)
   {
+    if (item->type() == Item::SUM_FUNC_ITEM &&
+        (((Item_sum*)item)->sum_func() == Item_sum::MAX_FUNC ||
+         ((Item_sum*)item)->sum_func() == Item_sum::MIN_FUNC))
+      item = ((Item_sum*)item)->args[0];
     /*
-      We can have enum/set type after merging only if we have one enum/set
-      field and number of NULL fields
+      We can have enum/set type after merging only if we have one enum|set
+      field (or MIN|MAX(enum|set field)) and number of NULL fields
     */
     DBUG_ASSERT((enum_set_typelib &&
                  get_real_type(item) == MYSQL_TYPE_NULL) ||

--- 1.199/sql/sql_show.cc	2005-07-07 06:43:31 -06:00
+++ 1.200/sql/sql_show.cc	2005-07-18 07:10:54 -06:00
@@ -638,6 +638,30 @@
   DBUG_RETURN(0);
 }
 
+/*
+returns the length of the longest type on the given table.
+This is used so that show fields will return the data using the proper 
+lengths instead of forcing columns such as type to always return with a 
+given length.
+*/
+uint get_longest_type_in_table(TABLE *table, const char *wild)
+{  
+  Field **ptr,*field;  
+  char tmp[MAX_FIELD_WIDTH];  
+  uint max_len = 0;  
+
+  for (ptr=table->field; (field= *ptr); ptr++)  
+  {    
+    if (!wild || !wild[0] ||         
+        !wild_case_compare(system_charset_info, field->field_name,wild))    
+    {
+      String type(tmp,sizeof(tmp), system_charset_info);      
+      field->sql_type(type);      
+      max_len = max(max_len, type.length());     
+    }  
+  }  
+  return max_len;
+}
 
 /***************************************************************************
 ** List all columns in a table_list->real_name
@@ -667,9 +691,14 @@
 #ifndef NO_EMBEDDED_ACCESS_CHECKS
   (void) get_table_grant(thd, table_list);
 #endif
+
+  /* we scan for the longest since long enum types can exceed 40 */
+  uint max_len = get_longest_type_in_table(table, wild);
+
   List<Item> field_list;
   field_list.push_back(new Item_empty_string("Field",NAME_LEN));
-  field_list.push_back(new Item_empty_string("Type",40));
+  field_list.push_back(new Item_empty_string("Type",
+	max_len > 40 ? max_len : 40));
   if (verbose)
     field_list.push_back(new Item_empty_string("Collation",40));
   field_list.push_back(new Item_empty_string("Null",1));

--- 1.25/mysql-test/r/ps_2myisam.result	2005-07-12 08:35:03 -06:00
+++ 1.26/mysql-test/r/ps_2myisam.result	2005-07-18 07:10:51 -06:00
@@ -77,8 +77,8 @@
 def	test	t9	t9	c26	c26	252	65535	4	Y	16	0	8
 def	test	t9	t9	c27	c27	252	16777215	10	Y	144	0	63
 def	test	t9	t9	c28	c28	252	16777215	10	Y	16	0	8
-def	test	t9	t9	c29	c29	252	16777215	8	Y	144	0	63
-def	test	t9	t9	c30	c30	252	16777215	8	Y	16	0	8
+def	test	t9	t9	c29	c29	252	4294967295	8	Y	144	0	63
+def	test	t9	t9	c30	c30	252	4294967295	8	Y	16	0	8
 def	test	t9	t9	c31	c31	254	5	3	Y	256	0	8
 def	test	t9	t9	c32	c32	254	24	7	Y	2048	0	8
 c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	c12	c13	c14	c15	c16	c17	c18	c19	c20	c21	c22	c23	c24	c25	c26	c27	c28	c29	c30	c31	c32
@@ -1812,17 +1812,17 @@
 def	test	t5	t5	const03	const03	5	23	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	20	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	254	3	3	N	1	0	8
-def	test	t5	t5	param04	param04	252	16777215	3	Y	16	0	8
+def	test	t5	t5	param04	param04	252	4294967295	3	Y	16	0	8
 def	test	t5	t5	const05	const05	254	3	3	N	129	0	63
-def	test	t5	t5	param05	param05	252	16777215	3	Y	144	0	63
+def	test	t5	t5	param05	param05	252	4294967295	3	Y	144	0	63
 def	test	t5	t5	const06	const06	253	10	10	N	1	0	8
-def	test	t5	t5	param06	param06	252	16777215	10	Y	16	0	8
+def	test	t5	t5	param06	param06	252	4294967295	10	Y	16	0	8
 def	test	t5	t5	const07	const07	10	10	10	Y	128	0	63
-def	test	t5	t5	param07	param07	252	16777215	10	Y	144	0	63
+def	test	t5	t5	param07	param07	252	4294967295	10	Y	144	0	63
 def	test	t5	t5	const08	const08	253	19	19	N	1	0	8
-def	test	t5	t5	param08	param08	252	16777215	19	Y	16	0	8
+def	test	t5	t5	param08	param08	252	4294967295	19	Y	16	0	8
 def	test	t5	t5	const09	const09	12	19	19	Y	128	0	63
-def	test	t5	t5	param09	param09	252	16777215	19	Y	144	0	63
+def	test	t5	t5	param09	param09	252	4294967295	19	Y	144	0	63
 def	test	t5	t5	const10	const10	3	10	9	N	32769	0	63
 def	test	t5	t5	param10	param10	8	20	9	Y	32768	0	63
 def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
@@ -1830,8 +1830,8 @@
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
 def	test	t5	t5	param13	param13	5	20	0	Y	32768	31	63
-def	test	t5	t5	param14	param14	252	16777215	0	Y	16	0	8
-def	test	t5	t5	param15	param15	252	16777215	0	Y	144	0	63
+def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
+def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
 param01	8
 const02	8.0

--- 1.26/mysql-test/r/ps_3innodb.result	2005-07-12 08:35:03 -06:00
+++ 1.27/mysql-test/r/ps_3innodb.result	2005-07-18 07:10:52 -06:00
@@ -77,8 +77,8 @@
 def	test	t9	t9	c26	c26	252	65535	4	Y	16	0	8
 def	test	t9	t9	c27	c27	252	16777215	10	Y	144	0	63
 def	test	t9	t9	c28	c28	252	16777215	10	Y	16	0	8
-def	test	t9	t9	c29	c29	252	16777215	8	Y	144	0	63
-def	test	t9	t9	c30	c30	252	16777215	8	Y	16	0	8
+def	test	t9	t9	c29	c29	252	4294967295	8	Y	144	0	63
+def	test	t9	t9	c30	c30	252	4294967295	8	Y	16	0	8
 def	test	t9	t9	c31	c31	254	5	3	Y	256	0	8
 def	test	t9	t9	c32	c32	254	24	7	Y	2048	0	8
 c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	c12	c13	c14	c15	c16	c17	c18	c19	c20	c21	c22	c23	c24	c25	c26	c27	c28	c29	c30	c31	c32
@@ -1795,17 +1795,17 @@
 def	test	t5	t5	const03	const03	5	23	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	20	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	254	3	3	N	1	0	8
-def	test	t5	t5	param04	param04	252	16777215	3	Y	16	0	8
+def	test	t5	t5	param04	param04	252	4294967295	3	Y	16	0	8
 def	test	t5	t5	const05	const05	254	3	3	N	129	0	63
-def	test	t5	t5	param05	param05	252	16777215	3	Y	144	0	63
+def	test	t5	t5	param05	param05	252	4294967295	3	Y	144	0	63
 def	test	t5	t5	const06	const06	253	10	10	N	1	0	8
-def	test	t5	t5	param06	param06	252	16777215	10	Y	16	0	8
+def	test	t5	t5	param06	param06	252	4294967295	10	Y	16	0	8
 def	test	t5	t5	const07	const07	10	10	10	Y	128	0	63
-def	test	t5	t5	param07	param07	252	16777215	10	Y	144	0	63
+def	test	t5	t5	param07	param07	252	4294967295	10	Y	144	0	63
 def	test	t5	t5	const08	const08	253	19	19	N	1	0	8
-def	test	t5	t5	param08	param08	252	16777215	19	Y	16	0	8
+def	test	t5	t5	param08	param08	252	4294967295	19	Y	16	0	8
 def	test	t5	t5	const09	const09	12	19	19	Y	128	0	63
-def	test	t5	t5	param09	param09	252	16777215	19	Y	144	0	63
+def	test	t5	t5	param09	param09	252	4294967295	19	Y	144	0	63
 def	test	t5	t5	const10	const10	3	10	9	N	32769	0	63
 def	test	t5	t5	param10	param10	8	20	9	Y	32768	0	63
 def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
@@ -1813,8 +1813,8 @@
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
 def	test	t5	t5	param13	param13	5	20	0	Y	32768	31	63
-def	test	t5	t5	param14	param14	252	16777215	0	Y	16	0	8
-def	test	t5	t5	param15	param15	252	16777215	0	Y	144	0	63
+def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
+def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
 param01	8
 const02	8.0

--- 1.24/mysql-test/r/ps_4heap.result	2005-07-12 08:35:03 -06:00
+++ 1.25/mysql-test/r/ps_4heap.result	2005-07-18 07:10:52 -06:00
@@ -1796,17 +1796,17 @@
 def	test	t5	t5	const03	const03	5	23	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	20	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	254	3	3	N	1	0	8
-def	test	t5	t5	param04	param04	252	16777215	3	Y	16	0	8
+def	test	t5	t5	param04	param04	252	4294967295	3	Y	16	0	8
 def	test	t5	t5	const05	const05	254	3	3	N	129	0	63
-def	test	t5	t5	param05	param05	252	16777215	3	Y	144	0	63
+def	test	t5	t5	param05	param05	252	4294967295	3	Y	144	0	63
 def	test	t5	t5	const06	const06	253	10	10	N	1	0	8
-def	test	t5	t5	param06	param06	252	16777215	10	Y	16	0	8
+def	test	t5	t5	param06	param06	252	4294967295	10	Y	16	0	8
 def	test	t5	t5	const07	const07	10	10	10	Y	128	0	63
-def	test	t5	t5	param07	param07	252	16777215	10	Y	144	0	63
+def	test	t5	t5	param07	param07	252	4294967295	10	Y	144	0	63
 def	test	t5	t5	const08	const08	253	19	19	N	1	0	8
-def	test	t5	t5	param08	param08	252	16777215	19	Y	16	0	8
+def	test	t5	t5	param08	param08	252	4294967295	19	Y	16	0	8
 def	test	t5	t5	const09	const09	12	19	19	Y	128	0	63
-def	test	t5	t5	param09	param09	252	16777215	19	Y	144	0	63
+def	test	t5	t5	param09	param09	252	4294967295	19	Y	144	0	63
 def	test	t5	t5	const10	const10	3	10	9	N	32769	0	63
 def	test	t5	t5	param10	param10	8	20	9	Y	32768	0	63
 def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
@@ -1814,8 +1814,8 @@
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
 def	test	t5	t5	param13	param13	5	20	0	Y	32768	31	63
-def	test	t5	t5	param14	param14	252	16777215	0	Y	16	0	8
-def	test	t5	t5	param15	param15	252	16777215	0	Y	144	0	63
+def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
+def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
 param01	8
 const02	8.0

--- 1.24/mysql-test/r/ps_5merge.result	2005-07-12 08:35:04 -06:00
+++ 1.25/mysql-test/r/ps_5merge.result	2005-07-18 07:10:53 -06:00
@@ -120,8 +120,8 @@
 def	test	t9	t9	c26	c26	252	65535	4	Y	16	0	8
 def	test	t9	t9	c27	c27	252	16777215	10	Y	144	0	63
 def	test	t9	t9	c28	c28	252	16777215	10	Y	16	0	8
-def	test	t9	t9	c29	c29	252	16777215	8	Y	144	0	63
-def	test	t9	t9	c30	c30	252	16777215	8	Y	16	0	8
+def	test	t9	t9	c29	c29	252	4294967295	8	Y	144	0	63
+def	test	t9	t9	c30	c30	252	4294967295	8	Y	16	0	8
 def	test	t9	t9	c31	c31	254	5	3	Y	256	0	8
 def	test	t9	t9	c32	c32	254	24	7	Y	2048	0	8
 c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	c12	c13	c14	c15	c16	c17	c18	c19	c20	c21	c22	c23	c24	c25	c26	c27	c28	c29	c30	c31	c32
@@ -1732,17 +1732,17 @@
 def	test	t5	t5	const03	const03	5	23	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	20	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	254	3	3	N	1	0	8
-def	test	t5	t5	param04	param04	252	16777215	3	Y	16	0	8
+def	test	t5	t5	param04	param04	252	4294967295	3	Y	16	0	8
 def	test	t5	t5	const05	const05	254	3	3	N	129	0	63
-def	test	t5	t5	param05	param05	252	16777215	3	Y	144	0	63
+def	test	t5	t5	param05	param05	252	4294967295	3	Y	144	0	63
 def	test	t5	t5	const06	const06	253	10	10	N	1	0	8
-def	test	t5	t5	param06	param06	252	16777215	10	Y	16	0	8
+def	test	t5	t5	param06	param06	252	4294967295	10	Y	16	0	8
 def	test	t5	t5	const07	const07	10	10	10	Y	128	0	63
-def	test	t5	t5	param07	param07	252	16777215	10	Y	144	0	63
+def	test	t5	t5	param07	param07	252	4294967295	10	Y	144	0	63
 def	test	t5	t5	const08	const08	253	19	19	N	1	0	8
-def	test	t5	t5	param08	param08	252	16777215	19	Y	16	0	8
+def	test	t5	t5	param08	param08	252	4294967295	19	Y	16	0	8
 def	test	t5	t5	const09	const09	12	19	19	Y	128	0	63
-def	test	t5	t5	param09	param09	252	16777215	19	Y	144	0	63
+def	test	t5	t5	param09	param09	252	4294967295	19	Y	144	0	63
 def	test	t5	t5	const10	const10	3	10	9	N	32769	0	63
 def	test	t5	t5	param10	param10	8	20	9	Y	32768	0	63
 def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
@@ -1750,8 +1750,8 @@
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
 def	test	t5	t5	param13	param13	5	20	0	Y	32768	31	63
-def	test	t5	t5	param14	param14	252	16777215	0	Y	16	0	8
-def	test	t5	t5	param15	param15	252	16777215	0	Y	144	0	63
+def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
+def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
 param01	8
 const02	8.0
@@ -3134,8 +3134,8 @@
 def	test	t9	t9	c26	c26	252	65535	4	Y	16	0	8
 def	test	t9	t9	c27	c27	252	16777215	10	Y	144	0	63
 def	test	t9	t9	c28	c28	252	16777215	10	Y	16	0	8
-def	test	t9	t9	c29	c29	252	16777215	8	Y	144	0	63
-def	test	t9	t9	c30	c30	252	16777215	8	Y	16	0	8
+def	test	t9	t9	c29	c29	252	4294967295	8	Y	144	0	63
+def	test	t9	t9	c30	c30	252	4294967295	8	Y	16	0	8
 def	test	t9	t9	c31	c31	254	5	3	Y	256	0	8
 def	test	t9	t9	c32	c32	254	24	7	Y	2048	0	8
 c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	c12	c13	c14	c15	c16	c17	c18	c19	c20	c21	c22	c23	c24	c25	c26	c27	c28	c29	c30	c31	c32
@@ -4746,17 +4746,17 @@
 def	test	t5	t5	const03	const03	5	23	1	N	32769	31	63
 def	test	t5	t5	param03	param03	5	20	1	Y	32768	31	63
 def	test	t5	t5	const04	const04	254	3	3	N	1	0	8
-def	test	t5	t5	param04	param04	252	16777215	3	Y	16	0	8
+def	test	t5	t5	param04	param04	252	4294967295	3	Y	16	0	8
 def	test	t5	t5	const05	const05	254	3	3	N	129	0	63
-def	test	t5	t5	param05	param05	252	16777215	3	Y	144	0	63
+def	test	t5	t5	param05	param05	252	4294967295	3	Y	144	0	63
 def	test	t5	t5	const06	const06	253	10	10	N	1	0	8
-def	test	t5	t5	param06	param06	252	16777215	10	Y	16	0	8
+def	test	t5	t5	param06	param06	252	4294967295	10	Y	16	0	8
 def	test	t5	t5	const07	const07	10	10	10	Y	128	0	63
-def	test	t5	t5	param07	param07	252	16777215	10	Y	144	0	63
+def	test	t5	t5	param07	param07	252	4294967295	10	Y	144	0	63
 def	test	t5	t5	const08	const08	253	19	19	N	1	0	8
-def	test	t5	t5	param08	param08	252	16777215	19	Y	16	0	8
+def	test	t5	t5	param08	param08	252	4294967295	19	Y	16	0	8
 def	test	t5	t5	const09	const09	12	19	19	Y	128	0	63
-def	test	t5	t5	param09	param09	252	16777215	19	Y	144	0	63
+def	test	t5	t5	param09	param09	252	4294967295	19	Y	144	0	63
 def	test	t5	t5	const10	const10	3	10	9	N	32769	0	63
 def	test	t5	t5	param10	param10	8	20	9	Y	32768	0	63
 def	test	t5	t5	const11	const11	3	4	4	Y	32768	0	63
@@ -4764,8 +4764,8 @@
 def	test	t5	t5	const12	const12	254	0	0	Y	128	0	63
 def	test	t5	t5	param12	param12	8	20	0	Y	32768	0	63
 def	test	t5	t5	param13	param13	5	20	0	Y	32768	31	63
-def	test	t5	t5	param14	param14	252	16777215	0	Y	16	0	8
-def	test	t5	t5	param15	param15	252	16777215	0	Y	144	0	63
+def	test	t5	t5	param14	param14	252	4294967295	0	Y	16	0	8
+def	test	t5	t5	param15	param15	252	4294967295	0	Y	144	0	63
 const01	8
 param01	8
 const02	8.0

--- 1.152/tests/mysql_client_test.c	2005-07-12 08:35:04 -06:00
+++ 1.153/tests/mysql_client_test.c	2005-07-18 07:10:56 -06:00
@@ -166,6 +166,14 @@
 #define mytest_r(x) if (x) {myerror(NULL);DIE_UNLESS(FALSE);}
 
 
+/* A workaround for Sun Forte 5.6 on Solaris x86 */
+
+static int cmp_double(double *a, double *b)
+{
+  return *a == *b;
+}
+
+
 /* Print the error message */
 
 static void print_error(const char *msg)
@@ -672,7 +680,7 @@
     fprintf(stdout, "\n    org_table:`%s`\t(expected: `%s`)",
             field->org_table, org_table);
     fprintf(stdout, "\n    database :`%s`\t(expected: `%s`)", field->db, db);
-    fprintf(stdout, "\n    length   :`%ld`\t(expected: `%ld`)",
+    fprintf(stdout, "\n    length   :`%lu`\t(expected: `%lu`)",
             field->length, length * cs->mbmaxlen);
     fprintf(stdout, "\n    maxlength:`%ld`", field->max_length);
     fprintf(stdout, "\n    charsetnr:`%d`", field->charsetnr);
@@ -1396,7 +1404,7 @@
     DIE_UNLESS(real_data == o_real_data);
     DIE_UNLESS(length[5] == 4);
 
-    DIE_UNLESS(double_data == o_double_data);
+    DIE_UNLESS(cmp_double(&double_data, &o_double_data));
     DIE_UNLESS(length[6] == 8);
 
     DIE_UNLESS(strcmp(data, str_data) == 0);
@@ -9583,7 +9591,7 @@
   uint32 uint32_val;
   longlong int64_val;
   ulonglong uint64_val;
-  double double_val, udouble_val;
+  double double_val, udouble_val, double_tmp;
   char longlong_as_string[22], ulonglong_as_string[22];
 
   /* mins and maxes */
@@ -9727,7 +9735,8 @@
   DIE_UNLESS(int64_val == int64_min);
   DIE_UNLESS(uint64_val == uint64_min);
   DIE_UNLESS(double_val == (longlong) uint64_min);
-  DIE_UNLESS(udouble_val == ulonglong2double(uint64_val));
+  double_tmp= ulonglong2double(uint64_val);
+  DIE_UNLESS(cmp_double(&udouble_val, &double_tmp));
   DIE_UNLESS(!strcmp(longlong_as_string, "0"));
   DIE_UNLESS(!strcmp(ulonglong_as_string, "0"));
 
@@ -9743,7 +9752,8 @@
   DIE_UNLESS(int64_val == int64_max);
   DIE_UNLESS(uint64_val == uint64_max);
   DIE_UNLESS(double_val == (longlong) uint64_val);
-  DIE_UNLESS(udouble_val == ulonglong2double(uint64_val));
+  double_tmp= ulonglong2double(uint64_val);
+  DIE_UNLESS(cmp_double(&udouble_val, &double_tmp));
   DIE_UNLESS(!strcmp(longlong_as_string, "-1"));
   DIE_UNLESS(!strcmp(ulonglong_as_string, "18446744073709551615"));
 
@@ -11670,6 +11680,78 @@
 #endif
 }
 
+
+/* Test correct max length for MEDIUMTEXT and LONGTEXT columns */
+
+static void test_bug9735()
+{
+  MYSQL_RES *res;
+  int rc;
+
+  myheader("test_bug9735");
+
+  rc= mysql_query(mysql, "drop table if exists t1");
+  myquery(rc);
+  rc= mysql_query(mysql, "create table t1 (a mediumtext, b longtext) "
+                         "character set latin1");
+  myquery(rc);
+  rc= mysql_query(mysql, "select * from t1");
+  myquery(rc);
+  res= mysql_store_result(mysql);
+  verify_prepare_field(res, 0, "a", "a", MYSQL_TYPE_BLOB,
+                       "t1", "t1", current_db, (1U << 24)-1, 0);
+  verify_prepare_field(res, 1, "b", "b", MYSQL_TYPE_BLOB,
+                       "t1", "t1", current_db, ~0U, 0);
+  mysql_free_result(res);
+  rc= mysql_query(mysql, "drop table t1");
+  myquery(rc);
+}
+
+/* Bug#11183 "mysql_stmt_reset() doesn't reset information about error" */
+
+static void test_bug11183()
+{
+  int rc;
+  MYSQL_STMT *stmt;
+  char bug_statement[]= "insert into t1 values (1)";
+
+  myheader("test_bug11183");
+
+  mysql_query(mysql, "drop table t1 if exists");
+  mysql_query(mysql, "create table t1 (a int)");
+
+  stmt= mysql_stmt_init(mysql);
+  DIE_UNLESS(stmt != 0);
+
+  rc= mysql_stmt_prepare(stmt, bug_statement, strlen(bug_statement));
+  check_execute(stmt, rc);
+
+  rc= mysql_query(mysql, "drop table t1");
+  myquery(rc);
+
+  /* Trying to execute statement that should fail on execute stage */
+  rc= mysql_stmt_execute(stmt);
+  DIE_UNLESS(rc);
+
+  mysql_stmt_reset(stmt);
+  DIE_UNLESS(mysql_stmt_errno(stmt) == 0);
+
+  mysql_query(mysql, "create table t1 (a int)");
+
+  /* Trying to execute statement that should pass ok */
+  if (mysql_stmt_execute(stmt))
+  {
+    mysql_stmt_reset(stmt);
+    DIE_UNLESS(mysql_stmt_errno(stmt) == 0);
+  }
+
+  mysql_stmt_close(stmt);
+
+  rc= mysql_query(mysql, "drop table t1");
+  myquery(rc);
+}
+
+
 /*
   Read and parse arguments and MySQL options from my.cnf
 */
@@ -11884,6 +11966,8 @@
   { "test_bug8330", test_bug8330 },
   { "test_bug7990", test_bug7990 },
   { "test_bug8378", test_bug8378 },
+  { "test_bug9735", test_bug9735 },
+  { "test_bug11183", test_bug11183 },
   { 0, 0 }
 };
 
Thread
bk commit into 4.1 tree (reggie:1.2342)reggie19 Jul