List:Commits« Previous MessageNext Message »
From:eugene Date:March 30 2006 3:15pm
Subject:bk commit into 5.0 tree (evgen:1.2121)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of evgen. When evgen 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.2121 06/03/30 17:14:55 evgen@stripped +14 -0
  Manual merge

  tests/mysql_client_test.c
    1.180 06/03/30 17:14:51 evgen@stripped +0 -4
    Manual merge

  strings/ctype-ucs2.c
    1.61 06/03/30 17:14:51 evgen@stripped +0 -2
    Manual merge

  sql/sql_table.cc
    1.303 06/03/30 17:14:51 evgen@stripped +1 -2
    Manual merge

  sql/sql_select.cc
    1.400 06/03/30 17:14:51 evgen@stripped +4 -11
    Manual merge

  sql/sql_class.h
    1.284 06/03/30 17:14:51 evgen@stripped +2 -3
    Manual merge

  sql/mysql_priv.h
    1.380 06/03/30 17:14:51 evgen@stripped +2 -3
    Manual merge

  sql/item_sum.h
    1.99 06/03/30 17:14:51 evgen@stripped +3 -6
    Manual merge

  sql/item_sum.cc
    1.172 06/03/30 17:14:51 evgen@stripped +1 -2
    Manual merge

  sql/ha_heap.cc
    1.77 06/03/30 17:14:51 evgen@stripped +0 -4
    Manual merge

  mysql-test/t/func_gconcat.test
    1.40 06/03/30 17:14:51 evgen@stripped +0 -0
    Manual merge

  mysql-test/r/func_gconcat.result
    1.53 06/03/30 17:14:51 evgen@stripped +0 -0
    Manual merge

  mysql-test/r/ctype_utf8.result
    1.86 06/03/30 17:14:51 evgen@stripped +0 -0
    Manual merge

  mysql-test/t/ctype_utf8.test
    1.79 06/03/30 16:58:06 evgen@stripped +0 -0
    Auto merged

  myisam/mi_search.c
    1.61 06/03/30 16:58:06 evgen@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:	evgen
# Host:	sunlight.local
# Root:	/local_work/15560-bug-5.0-mysql/RESYNC

--- 1.60/myisam/mi_search.c	2005-10-27 21:04:31 +04:00
+++ 1.61/myisam/mi_search.c	2006-03-30 16:58:06 +04:00
@@ -1471,7 +1471,7 @@ _mi_calc_var_pack_key_length(MI_KEYDEF *
     if (!*key++)
     {
       s_temp->key=key;
-      s_temp->ref_length=s_temp->key_length=0;
+      s_temp->key_length= 0;
       s_temp->totlength=key_length-1+diff_flag;
       s_temp->next_key_pos=0;                   /* No next key */
       return (s_temp->totlength);
@@ -1626,12 +1626,12 @@ _mi_calc_var_pack_key_length(MI_KEYDEF *
             s_temp->prev_length= org_key_length;
             s_temp->n_ref_length=s_temp->n_length=  org_key_length;
             length+=           org_key_length;
-            /* +get_pack_length(org_key_length); */
           }
           return (int) length;
         }
 
         ref_length=n_length;
+        /* Get information about not packed key suffix */
         get_key_pack_length(n_length,next_length_pack,next_key);
 
         /* Test if new keys has fewer characters that match the previous key */
@@ -1640,7 +1640,6 @@ _mi_calc_var_pack_key_length(MI_KEYDEF *
           s_temp->part_of_prev_key=     0;
           s_temp->prev_length=          ref_length;
           s_temp->n_ref_length= s_temp->n_length= n_length+ref_length;
-          /* s_temp->prev_key+=         get_pack_length(org_key_length); */
           return (int) length+ref_length-next_length_pack;
         }
         if (ref_length+pack_marker > new_ref_length)
@@ -1651,9 +1650,7 @@ _mi_calc_var_pack_key_length(MI_KEYDEF *
           s_temp->prev_length=      ref_length - new_pack_length;
           s_temp->n_ref_length=s_temp->n_length=n_length + s_temp->prev_length;
           s_temp->prev_key+=        new_pack_length;
-/*                                  +get_pack_length(org_key_length); */
-          length= length-get_pack_length(ref_length)+
-            get_pack_length(new_pack_length);
+          length-= (next_length_pack - get_pack_length(s_temp->n_length));
           return (int) length + s_temp->prev_length;
         }
       }
@@ -1662,7 +1659,7 @@ _mi_calc_var_pack_key_length(MI_KEYDEF *
         /* Next key wasn't a prefix of previous key */
         ref_length=0;
         next_length_pack=0;
-     }
+      }
       DBUG_PRINT("test",("length: %d  next_key: %lx", length,
                          (long) next_key));
 

--- 1.76/sql/ha_heap.cc	2006-02-03 00:07:27 +03:00
+++ 1.77/sql/ha_heap.cc	2006-03-30 17:14:51 +04:00
@@ -532,7 +532,7 @@ ha_rows ha_heap::records_in_range(uint i
     return records;
 
   /* Assert that info() did run. We need current statistics here. */
-  DBUG_ASSERT(key_stat_version);
+  DBUG_ASSERT(key_stat_version == file->s->key_stat_version);
   return key->rec_per_key[key->key_parts-1];
 }
 

--- 1.171/sql/item_sum.cc	2006-03-05 19:47:10 +03:00
+++ 1.172/sql/item_sum.cc	2006-03-30 17:14:51 +04:00
@@ -2472,6 +2472,7 @@ void Item_sum_count_distinct::make_uniqu
 {
   table=0;
   original= 0;
+  force_copy_fields= 1;
   tree= 0;
   tmp_table_param= 0;
   always_null= FALSE;
@@ -2515,6 +2516,7 @@ bool Item_sum_count_distinct::setup(THD 
   if (always_null)
     return FALSE;
   count_field_types(tmp_table_param,list,0);
+  tmp_table_param->force_copy_fields= force_copy_fields;
   DBUG_ASSERT(table == 0);
   if (!(table= create_tmp_table(thd, tmp_table_param, list, (ORDER*) 0, 1,
 				0,
@@ -3022,7 +3024,7 @@ Item_func_group_concat(Name_resolution_c
                        bool distinct_arg, List<Item> *select_list,
                        SQL_LIST *order_list, String *separator_arg)
   :tmp_table_param(0), warning(0),
-   separator(separator_arg), tree(0), table(0),
+   force_copy_fields(0), separator(separator_arg), tree(0), table(0),
    order(0), context(context_arg),
    arg_count_order(order_list ? order_list->elements : 0),
    arg_count_field(select_list->elements),
@@ -3075,6 +3077,7 @@ Item_func_group_concat::Item_func_group_
   :Item_sum(thd, item),
   tmp_table_param(item->tmp_table_param),
   warning(item->warning),
+  force_copy_fields(item->force_copy_fields),
   separator(item->separator),
   tree(item->tree),
   table(item->table),
@@ -3287,6 +3290,7 @@ bool Item_func_group_concat::setup(THD *
     DBUG_RETURN(TRUE);
 
   count_field_types(tmp_table_param,all_fields,0);
+  tmp_table_param->force_copy_fields= force_copy_fields;
   DBUG_ASSERT(table == 0);
   /*
     We have to create a temporary table to get descriptions of fields
@@ -3349,6 +3353,7 @@ void Item_func_group_concat::make_unique
   tmp_table_param= 0;
   table=0;
   original= 0;
+  force_copy_fields= 1;
   tree= 0;
 }
 

--- 1.98/sql/item_sum.h	2006-02-28 19:29:47 +03:00
+++ 1.99/sql/item_sum.h	2006-03-30 17:14:51 +04:00
@@ -501,6 +501,7 @@ class Item_sum_count_distinct :public It
   TABLE *table;
   uint32 *field_lengths;
   TMP_TABLE_PARAM *tmp_table_param;
+  bool force_copy_fields;
   /*
     If there are no blobs, we can use a tree, which
     is faster than heap table. In that case, we still use the table
@@ -524,13 +525,14 @@ class Item_sum_count_distinct :public It
 public:
   Item_sum_count_distinct(List<Item> &list)
     :Item_sum_int(list), table(0), field_lengths(0), tmp_table_param(0),
-     tree(0), original(0), always_null(FALSE)
+     tree(0), force_copy_fields(0), original(0), always_null(FALSE)
   { quick_group= 0; }
   Item_sum_count_distinct(THD *thd, Item_sum_count_distinct *item)
     :Item_sum_int(thd, item), table(item->table),
      field_lengths(item->field_lengths),
      tmp_table_param(item->tmp_table_param),
-     tree(item->tree), original(item), tree_key_length(item->tree_key_length),
+     tree(item->tree), force_copy_fields(0), original(item),
+     tree_key_length(item->tree_key_length),
      always_null(item->always_null)
   {}
   ~Item_sum_count_distinct();
@@ -1086,6 +1088,7 @@ class Item_func_group_concat : public It
   bool distinct;
   bool warning_for_row;
   bool always_null;
+  bool force_copy_fields;
   bool no_appended;
   /*
     Following is 0 normal object and pointer to original one for copy

--- 1.379/sql/mysql_priv.h	2006-03-21 16:35:45 +03:00
+++ 1.380/sql/mysql_priv.h	2006-03-30 17:14:51 +04:00
@@ -706,6 +706,7 @@ Field *create_tmp_field(THD *thd, TABLE 
 			Item ***copy_func, Field **from_field,
 			bool group, bool modify_item,
 			bool table_cant_handle_bit_fields,
+                        bool make_copy_field,
                         uint convert_blob_length);
 void sp_prepare_create_field(THD *thd, create_field *sql_field);
 int prepare_create_field(create_field *sql_field, 

--- 1.283/sql/sql_class.h	2006-03-10 17:47:43 +03:00
+++ 1.284/sql/sql_class.h	2006-03-30 17:14:51 +04:00
@@ -1829,11 +1829,12 @@ public:
     aggregate functions as normal functions.
   */
   bool precomputed_group_by;
+  bool force_copy_fields;
 
   TMP_TABLE_PARAM()
     :copy_field(0), group_parts(0),
      group_length(0), group_null_parts(0), convert_blob_length(0),
-     schema_table(0), precomputed_group_by(0)
+     schema_table(0), precomputed_group_by(0), force_copy_fields(0)
   {}
   ~TMP_TABLE_PARAM()
   {

--- 1.399/sql/sql_select.cc	2006-03-28 18:04:50 +04:00
+++ 1.400/sql/sql_select.cc	2006-03-30 17:14:51 +04:00
@@ -8294,6 +8294,7 @@ Field *create_tmp_field(THD *thd, TABLE 
                         Item ***copy_func, Field **from_field,
                         bool group, bool modify_item,
                         bool table_cant_handle_bit_fields,
+                        bool make_copy_field,
                         uint convert_blob_length)
 {
   Item::Type orig_type= type;
@@ -8373,7 +8374,13 @@ Field *create_tmp_field(THD *thd, TABLE 
   case Item::REF_ITEM:
   case Item::NULL_ITEM:
   case Item::VARBIN_ITEM:
-    return create_tmp_field_from_item(thd, item, table, copy_func, modify_item,
+    if (make_copy_field)
+    {
+      DBUG_ASSERT(((Item_result_field*)item)->result_field);
+      *from_field= ((Item_result_field*)item)->result_field;
+    }
+    return create_tmp_field_from_item(thd, item, table, (make_copy_field ? 0 :
+                                      copy_func), modify_item,
                                       convert_blob_length);
   case Item::TYPE_HOLDER:
     return ((Item_type_holder *)item)->make_field_by_type(table);
@@ -8445,6 +8452,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARA
   Item **copy_func;
   MI_COLUMNDEF *recinfo;
   uint total_uneven_bit_length= 0;
+  bool force_copy_fields= param->force_copy_fields;
   DBUG_ENTER("create_tmp_table");
   DBUG_PRINT("enter",("distinct: %d  save_sum_fields: %d  rows_limit: %lu  group: %d",
 		      (int) distinct, (int) save_sum_fields,
@@ -8605,7 +8613,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARA
 	  Field *new_field=
             create_tmp_field(thd, table, arg, arg->type(), &copy_func,
                              tmp_from_field, group != 0,not_all_columns,
-                             distinct,
+                             distinct, 0,
                              param->convert_blob_length);
 	  if (!new_field)
 	    goto err;					// Should be OOM
@@ -8662,7 +8670,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARA
         create_tmp_field(thd, table, item, type, &copy_func,
                          tmp_from_field, group != 0,
                          not_all_columns || group != 0,
-                         item->marker == 4,
+                         item->marker == 4, 0,
                          param->convert_blob_length);
 
       if (!new_field)

--- 1.302/sql/sql_table.cc	2006-03-30 08:13:19 +04:00
+++ 1.303/sql/sql_table.cc	2006-03-30 17:14:51 +04:00
@@ -1798,7 +1798,7 @@ TABLE *create_table_from_items(THD *thd,
       field=item->tmp_table_field(&tmp_table);
     else
       field=create_tmp_field(thd, &tmp_table, item, item->type(),
-                             (Item ***) 0, &tmp_field, 0, 0, 0, 0);
+                             (Item ***) 0, &tmp_field, 0, 0, 0, 0, 0);
     if (!field ||
 	!(cr_field=new create_field(field,(item->type() == Item::FIELD_ITEM ?
 					   ((Item_field *)item)->field :

--- 1.85/mysql-test/r/ctype_utf8.result	2006-01-12 12:08:22 +03:00
+++ 1.86/mysql-test/r/ctype_utf8.result	2006-03-30 17:14:51 +04:00
@@ -1066,6 +1066,52 @@ LENGTH(bug)
 100
 DROP TABLE t2;
 DROP TABLE t1;
+SET NAMES utf8;
+DROP TABLE IF EXISTS t1;
+Warnings:
+Note	1051	Unknown table 't1'
+CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
+INSERT INTO t1 VALUES('uu');
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+INSERT INTO t1 VALUES('uU');
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+INSERT INTO t1 VALUES('uu');
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+INSERT INTO t1 VALUES('uuABC');
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+INSERT INTO t1 VALUES('UuABC');
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+INSERT INTO t1 VALUES('uuABC');
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+alter table t1 add b int;
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',1);
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',2);
+delete from t1 where b=1;
+INSERT INTO t1
VALUES('UUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',1);
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',3);
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',4);
+delete from t1 where b=3;
+INSERT INTO t1
VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',3);
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+drop table t1;
 CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8;
 INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa');
 SELECT id FROM t1;

--- 1.78/mysql-test/t/ctype_utf8.test	2006-01-12 10:25:38 +03:00
+++ 1.79/mysql-test/t/ctype_utf8.test	2006-03-30 16:58:06 +04:00
@@ -878,6 +878,40 @@ SELECT LENGTH(bug) FROM t2;
 DROP TABLE t2;
 DROP TABLE t1;
 
+#
+# Bug#17705: Corruption of compressed index when index length changes between
+# 254 and 256
+#
+
+SET NAMES utf8;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
+INSERT INTO t1 VALUES('uu');
+check table t1;
+INSERT INTO t1 VALUES('uU');
+check table t1;
+INSERT INTO t1 VALUES('uu');
+check table t1;
+INSERT INTO t1 VALUES('uuABC');
+check table t1;
+INSERT INTO t1 VALUES('UuABC');
+check table t1;
+INSERT INTO t1 VALUES('uuABC');
+check table t1;
+alter table t1 add b int;
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',1);
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',2);
+delete from t1 where b=1;
+INSERT INTO t1
VALUES('UUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',1);
+check table t1;
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',3);
+INSERT INTO t1
VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',4);
+delete from t1 where b=3;
+INSERT INTO t1
VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',3);
+check table t1;
+drop table t1;
+
 # End of 4.1 tests
 
 #

--- 1.179/tests/mysql_client_test.c	2006-03-10 21:47:17 +03:00
+++ 1.180/tests/mysql_client_test.c	2006-03-30 17:14:51 +04:00
@@ -12992,7 +12992,6 @@ static void test_bug9520()
 }
 
 
-/*
   We can't have more than one cursor open for a prepared statement.
   Test re-executions of a PS with cursor; mysql_stmt_reset must close
   the cursor attached to the statement, if there is one.

--- 1.52/mysql-test/r/func_gconcat.result	2006-01-21 20:02:11 +03:00
+++ 1.53/mysql-test/r/func_gconcat.result	2006-03-30 17:14:51 +04:00
@@ -596,6 +596,21 @@ GROUP_CONCAT(a ORDER BY a)
 ,x
 ,z
 DROP TABLE t1;
+create table t1(f1 int);
+insert into t1 values(1),(2),(3);
+select f1, group_concat(f1+1) from t1 group by f1 with rollup;
+f1	group_concat(f1+1)
+1	2
+2	3
+3	4
+NULL	2,3,4
+select count(distinct (f1+1)) from t1 group by f1 with rollup;
+count(distinct (f1+1))
+1
+1
+1
+3
+drop table t1;
 set names latin1;
 create table t1 (a char, b char);
 insert into t1 values ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b');

--- 1.39/mysql-test/t/func_gconcat.test	2005-11-23 10:00:43 +03:00
+++ 1.40/mysql-test/t/func_gconcat.test	2006-03-30 17:14:51 +04:00
@@ -389,6 +389,14 @@ SELECT GROUP_CONCAT(a ORDER BY a) FROM t
 
 DROP TABLE t1;
 
+#
+# Bug #15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
+#
+create table t1(f1 int);
+insert into t1 values(1),(2),(3);
+select f1, group_concat(f1+1) from t1 group by f1 with rollup;
+select count(distinct (f1+1)) from t1 group by f1 with rollup;
+drop table t1;
 # End of 4.1 tests
 
 #
Thread
bk commit into 5.0 tree (evgen:1.2121)eugene30 Mar