diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index ad1ba8ae3db6b87dbe3e38e0fb750cfe7065a7d7..0136f72a817c1f1b75123d31d7e3076954630919 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -14,18 +14,18 @@ insert into t1 values (3,9,"D","c");
 select grp,group_concat(c) from t1 group by grp;
 grp	group_concat(c)
 1	a
-2	b c
-3	E C D d d D
+2	b,c
+3	E,C,D,d,d,D
 select grp,group_concat(a,c) from t1 group by grp;
 grp	group_concat(a,c)
 1	1a
-2	2b 3c
-3	4E 5C 6D 7d 8d 9D
+2	2b,3c
+3	4E,5C,6D,7d,8d,9D
 select grp,group_concat("(",a,":",c,")") from t1 group by grp;
 grp	group_concat("(",a,":",c,")")
 1	(1:a)
-2	(2:b) (3:c)
-3	(4:E) (5:C) (6:D) (7:d) (8:d) (9:D)
+2	(2:b),(3:c)
+3	(4:E),(5:C),(6:D),(7:d),(8:d),(9:D)
 select grp,group_concat(c separator ",") from t1 group by grp;
 grp	group_concat(c separator ",")
 1	a
@@ -39,48 +39,48 @@ grp	group_concat(c separator "---->")
 select grp,group_concat(c order by c) from t1 group by grp;
 grp	group_concat(c order by c)
 1	a
-2	b c
-3	C D d d D E
+2	b,c
+3	C,D,d,d,D,E
 select grp,group_concat(c order by c desc) from t1 group by grp;
 grp	group_concat(c order by c desc)
 1	a
-2	c b
-3	E D d d D C
+2	c,b
+3	E,D,d,d,D,C
 select grp,group_concat(d order by a) from t1 group by grp;
 grp	group_concat(d order by a)
 1	a
-2	a b
-3	a b b d d c
+2	a,b
+3	a,b,b,d,d,c
 select grp,group_concat(d order by a desc) from t1 group by grp;
 grp	group_concat(d order by a desc)
 1	a
-2	b a
-3	c d d b b a
+2	b,a
+3	c,d,d,b,b,a
 select grp,group_concat(a order by a,d+c) from t1 group by grp;
 grp	group_concat(a order by a,d+c)
 1	1
-2	2 3
-3	4 5 6 7 8 9
+2	2,3
+3	4,5,6,7,8,9
 select grp,group_concat(c order by 1) from t1 group by grp;
 grp	group_concat(c order by 1)
 1	a
-2	b c
-3	C D d d D E
+2	b,c
+3	C,D,d,d,D,E
 select grp,group_concat(c order by "c") from t1 group by grp;
 grp	group_concat(c order by "c")
 1	a
-2	b c
-3	C D d d D E
+2	b,c
+3	C,D,d,d,D,E
 select grp,group_concat(distinct c order by c) from t1 group by grp;
 grp	group_concat(distinct c order by c)
 1	a
-2	b c
-3	C D E
+2	b,c
+3	C,D,E
 select grp,group_concat(distinct c order by c desc) from t1 group by grp;
 grp	group_concat(distinct c order by c desc)
 1	a
-2	c b
-3	E D C
+2	c,b
+3	E,D,C
 select grp,group_concat(c order by c separator ",") from t1 group by grp;
 grp	group_concat(c order by c separator ",")
 1	a
@@ -104,8 +104,8 @@ grp	group_concat(distinct c order by c desc separator ",")
 select grp,group_concat(c order by grp desc) from t1 group by grp order by grp;
 grp	group_concat(c order by grp desc)
 1	a
-2	c b
-3	D d d D C E
+2	c,b
+3	D,d,d,D,C,E
 select grp, group_concat(a separator "")+0 from t1 group by grp;
 grp	group_concat(a separator "")+0
 1	1
@@ -138,7 +138,7 @@ select grp,group_concat(c order by c) from t1 group by grp;
 grp	group_concat(c order by c)
 1	NULL
 2	b
-3	D D E
+3	D,D,E
 4	
 5	NULL
 set group_concat_max_len = 5;
@@ -146,7 +146,7 @@ select grp,group_concat(c) from t1 group by grp;
 grp	group_concat(c)
 1	NULL
 2	b
-3	E D D
+3	E,D,D
 4	
 5	NULL
 Warnings:
diff --git a/sql/item_sum.h b/sql/item_sum.h
index 42d46876d27eaa71b314b06912cb2f7ad70cf0f0..1b3e993fffc67430482608f28a760b13ffa22fe3 100644
--- a/sql/item_sum.h
+++ b/sql/item_sum.h
@@ -697,6 +697,7 @@ class Item_func_group_concat : public Item_sum
   enum Sumfunctype sum_func () const {return GROUP_CONCAT_FUNC;}
   const char *func_name() const { return "group_concat"; }
   enum Type type() const { return SUM_FUNC_ITEM; }  
+  void fix_length_and_dec() { max_length=group_concat_max_len; }
   virtual Item_result result_type () const { return STRING_RESULT; }
   void reset();
   bool add();
@@ -715,4 +716,5 @@ class Item_func_group_concat : public Item_sum
     return res ? strtoll(res->c_ptr(),(char**) 0,10) : (longlong) 0;
   }
   String* val_str(String* str);
+  Item *copy_or_same(THD* thd) { return new Item_func_group_concat(thd, *this); }
 };
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 189a28aea519a141a215aadf2a29b4c83d8ac740..745d0a8e7d20f49264a5baac785592f4ef22e401 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -2588,7 +2588,7 @@ opt_distinct:
     |DISTINCT   { $$ = 1; };
 
 opt_gconcat_separator:
-    /* empty */        { $$ = new String(" ",1,default_charset_info); }
+    /* empty */        { $$ = new String(",",1,default_charset_info); }
     |SEPARATOR_SYM text_string  { $$ = $2; };