diff options
author | unknown <igor@rurik.mysql.com> | 2005-06-21 10:15:22 -0700 |
---|---|---|
committer | unknown <igor@rurik.mysql.com> | 2005-06-21 10:15:22 -0700 |
commit | 15e922f854fc3b78c7380aeb95481f830c247de2 (patch) | |
tree | 5a458bf92812f82a1edf51c6d2440f585c5ffd13 | |
parent | 04f6f63dd8bdcb4e0d5e7cc6b2200a87eff037fe (diff) | |
parent | 8f318ec5a027051318c66ede077c7a43c539be6b (diff) | |
download | mariadb-git-15e922f854fc3b78c7380aeb95481f830c247de2.tar.gz |
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0
into rurik.mysql.com:/home/igor/mysql-5.0
-rw-r--r-- | mysql-test/r/group_by.result | 31 | ||||
-rw-r--r-- | mysql-test/t/group_by.test | 39 | ||||
-rw-r--r-- | sql/item_buff.cc | 4 |
3 files changed, 27 insertions, 47 deletions
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 7e1aebac872..edad116028f 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -723,27 +723,6 @@ WHERE hostname LIKE '%aol%' hostname no cache-dtc-af05.proxy.aol.com 1 DROP TABLE t1; -create table t1 (c1 char(3), c2 char(3)); -create table t2 (c3 char(3), c4 char(3)); -insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2'); -insert into t2 values ('aaa', 'bb1'), ('aaa', 'bb2'); -select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4 -group by c2; -c2 -aaa -aaa -Warnings: -Warning 1052 Column 'c2' in group statement is ambiguous -show warnings; -Level Code Message -Warning 1052 Column 'c2' in group statement is ambiguous -select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4 -group by t1.c1; -c2 -aaa -show warnings; -Level Code Message -drop table t1, t2; CREATE TABLE t1 (a int, b int); INSERT INTO t1 VALUES (1,2), (1,3); SELECT a, b FROM t1 GROUP BY 'const'; @@ -762,3 +741,13 @@ SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f; f id 20050501123000 1 DROP TABLE t1; +CREATE TABLE t1 (id varchar(20) NOT NULL); +INSERT INTO t1 VALUES ('trans1'), ('trans2'); +CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL); +INSERT INTO t2 VALUES ('trans1', 'a problem'); +SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment +FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment; +COUNT(DISTINCT(t1.id)) comment +1 NULL +1 a problem +DROP TABLE t1, t2; diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index f0546daf463..be8bdbe892e 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -543,30 +543,6 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1 DROP TABLE t1; # -# Bug#11211: Ambiguous column reference in GROUP BY. -# - -create table t1 (c1 char(3), c2 char(3)); -create table t2 (c3 char(3), c4 char(3)); -insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2'); -insert into t2 values ('aaa', 'bb1'), ('aaa', 'bb2'); - -# query with ambiguous column reference 'c2' ---disable_ps_protocol -select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4 -group by c2; -show warnings; ---enable_ps_protocol - -# this query has no ambiguity -select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4 -group by t1.c1; - -show warnings; - -drop table t1, t2; - -# # Test for bug #8614: GROUP BY 'const' with DISTINCT # @@ -589,3 +565,18 @@ INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' ); SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f; DROP TABLE t1; + +# +# Test for bug #11295: GROUP BY a BLOB column with COUNT(DISTINCT column1) +# when the BLOB column takes NULL values +# + +CREATE TABLE t1 (id varchar(20) NOT NULL); +INSERT INTO t1 VALUES ('trans1'), ('trans2'); +CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL); +INSERT INTO t2 VALUES ('trans1', 'a problem'); + +SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment + FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment; + +DROP TABLE t1, t2; diff --git a/sql/item_buff.cc b/sql/item_buff.cc index 7e7bbe51657..6652aaafb57 100644 --- a/sql/item_buff.cc +++ b/sql/item_buff.cc @@ -60,8 +60,8 @@ bool Cached_item_str::cmp(void) String *res; bool tmp; - res=item->val_str(&tmp_value); - res->length(min(res->length(), value.alloced_length())); + if ((res=item->val_str(&tmp_value))) + res->length(min(res->length(), value.alloced_length())); if (null_value != item->null_value) { if ((null_value= item->null_value)) |