List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:July 30 2010 1:57pm
Subject:bzr commit into mysql-trunk-merge branch (Georgi.Kodinov:3155)
View as plain text  
#At file:///home/kgeorge/mysql/work/B55188-trunk-merge/ based on revid:davi.arnaut@stripped

 3155 Georgi Kodinov	2010-07-30 [merge]
      merge

    modified:
      mysql-test/r/group_by.result
      mysql-test/t/group_by.test
      sql/item.h
      sql/item_buff.cc
=== modified file 'mysql-test/r/group_by.result'
--- a/mysql-test/r/group_by.result	2010-07-19 17:11:47 +0000
+++ b/mysql-test/r/group_by.result	2010-07-30 13:56:57 +0000
@@ -1811,6 +1811,41 @@ MAX(t2.a)
 2
 DROP TABLE t1, t2;
 #
+# Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results
+#
+CREATE TABLE t1 (a text, b varchar(10));
+INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two');
+EXPLAIN 
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+id	1
+select_type	SIMPLE
+table	t1
+type	ALL
+possible_keys	NULL
+key	NULL
+key_len	NULL
+ref	NULL
+rows	2
+Extra	Using filesort
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+SUBSTRING(a,1,10)	LENGTH(a)	GROUP_CONCAT(b)
+1111111111	1300	one,two
+EXPLAIN 
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+id	1
+select_type	SIMPLE
+table	t1
+type	ALL
+possible_keys	NULL
+key	NULL
+key_len	NULL
+ref	NULL
+rows	2
+Extra	Using temporary; Using filesort
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+SUBSTRING(a,1,10)	LENGTH(a)
+1111111111	1300
+DROP TABLE t1;
 # End of 5.1 tests
 #
 # Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00

=== modified file 'mysql-test/t/group_by.test'
--- a/mysql-test/t/group_by.test	2010-07-19 17:11:47 +0000
+++ b/mysql-test/t/group_by.test	2010-07-30 13:56:57 +0000
@@ -1222,6 +1222,20 @@ DROP TABLE t1, t2;
 
 
 --echo #
+--echo # Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results
+--echo #
+
+CREATE TABLE t1 (a text, b varchar(10));
+INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two');
+
+query_vertical EXPLAIN 
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+query_vertical EXPLAIN 
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+DROP TABLE t1;
+
 
 --echo # End of 5.1 tests
 

=== modified file 'sql/item.h'
--- a/sql/item.h	2010-07-19 17:11:47 +0000
+++ b/sql/item.h	2010-07-30 13:56:57 +0000
@@ -2982,6 +2982,7 @@ public:
 class Cached_item_str :public Cached_item
 {
   Item *item;
+  uint32 value_max_length;
   String value,tmp_value;
 public:
   Cached_item_str(THD *thd, Item *arg);

=== modified file 'sql/item_buff.cc'
--- a/sql/item_buff.cc	2010-03-31 14:05:33 +0000
+++ b/sql/item_buff.cc	2010-07-30 13:56:57 +0000
@@ -65,7 +65,9 @@ Cached_item::~Cached_item() {}
 */
 
 Cached_item_str::Cached_item_str(THD *thd, Item *arg)
-  :item(arg), value(min(arg->max_length, thd->variables.max_sort_length))
+  :item(arg),
+   value_max_length(min(arg->max_length, thd->variables.max_sort_length)),
+   value(value_max_length)
 {}
 
 bool Cached_item_str::cmp(void)
@@ -74,7 +76,7 @@ bool Cached_item_str::cmp(void)
   bool tmp;
 
   if ((res=item->val_str(&tmp_value)))
-    res->length(min(res->length(), value.alloced_length()));
+    res->length(min(res->length(), value_max_length));
   if (null_value != item->null_value)
   {
     if ((null_value= item->null_value))


Attachment: [text/bzr-bundle] bzr/georgi.kodinov@oracle.com-20100730135657-z4wiltp6sqrjbn28.bundle
Thread
bzr commit into mysql-trunk-merge branch (Georgi.Kodinov:3155) Georgi Kodinov30 Jul