summaryrefslogtreecommitdiff
path: root/mysql-test/t/having.test
diff options
context:
space:
mode:
authorvva@eagle.mysql.r18.ru <>2004-08-12 20:37:31 +0500
committervva@eagle.mysql.r18.ru <>2004-08-12 20:37:31 +0500
commit5406709672b92569218ffceb4875b6617e12a04f (patch)
treeb6ef68101ea51f8f69e3826a5d1e60f3e143d35d /mysql-test/t/having.test
parente228547a61d958f9702ac59ac06ef41116910d55 (diff)
downloadmariadb-git-5406709672b92569218ffceb4875b6617e12a04f.tar.gz
fixed Bug #4358 Problem with HAVING clause that uses alias
from the select list and TEXT field make setup_copy_fields to insert Item_copy_string for blobs in the beginning of the copy_funcs (push_back instead of push_front) the thing is that Item_copy_string::copy for function can call Item_copy_string::val_int for blob via Item_ref. But if Item_copy_string::copy for blob isn't called before, it's value will be wrong. So all the Item_copy_string::copy for blobs should be called before Item_copy_string::copy for functions.
Diffstat (limited to 'mysql-test/t/having.test')
-rw-r--r--mysql-test/t/having.test46
1 files changed, 46 insertions, 0 deletions
diff --git a/mysql-test/t/having.test b/mysql-test/t/having.test
index cb6fa85ffde..c8835bf1613 100644
--- a/mysql-test/t/having.test
+++ b/mysql-test/t/having.test
@@ -66,3 +66,49 @@ select id, sum(qty) as sqty from t1 group by id having sqty>2;
select sum(qty) as sqty from t1 group by id having count(id) > 0;
select sum(qty) as sqty from t1 group by id having count(distinct id) > 0;
drop table t1;
+
+#
+# Test case for Bug #4358 Problem with HAVING clause that uses alias from the
+# select list and TEXT field
+#
+
+CREATE TABLE t1 (
+ `id` bigint(20) NOT NULL default '0',
+ `description` text
+) TYPE=MyISAM;
+
+CREATE TABLE t2 (
+ `id` bigint(20) NOT NULL default '0',
+ `description` varchar(20)
+) TYPE=MyISAM;
+
+INSERT INTO t1 VALUES (1, 'test');
+INSERT INTO t2 VALUES (1, 'test');
+
+CREATE TABLE t3 (
+ `id` bigint(20) NOT NULL default '0',
+ `order_id` bigint(20) NOT NULL default '0'
+) TYPE=MyISAM;
+
+select
+ a.id, a.description,
+ count(b.id) as c
+from t1 a left join t3 b on a.id=b.order_id
+group by a.id, a.description
+having (a.description is not null) and (c=0);
+
+select
+ a.*,
+ count(b.id) as c
+from t2 a left join t3 b on a.id=b.order_id
+group by a.id, a.description
+having (a.description is not null) and (c=0);
+
+INSERT INTO t1 VALUES (2, 'test2');
+
+select
+ a.id, a.description,
+ count(b.id) as c
+from t1 a left join t3 b on a.id=b.order_id
+group by a.id, a.description
+having (a.description is not null) and (c=0);