Commit 2b59a97b authored by unknown's avatar unknown
Browse files

Merge bk@192.168.21.1:mysql-4.1-opt

into  mysql.com:/home/hf/work/mysql-4.1.15428

parents feb9cc2f 9bf2ed95
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -2946,3 +2946,39 @@ ORDER BY t2.c, t2.b LIMIT 1) WHERE t1.a = 10;
a	a	b
10	1	359
drop table t1,t2;
CREATE TABLE t1 (                  
field1 int NOT NULL,                 
field2 int NOT NULL,                 
field3 int NOT NULL,                 
PRIMARY KEY  (field1,field2,field3)  
);
CREATE TABLE t2 (             
fieldA int NOT NULL,            
fieldB int NOT NULL,            
PRIMARY KEY  (fieldA,fieldB)     
);
INSERT INTO t1 VALUES
(1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1);
INSERT INTO t2 VALUES (1,1), (1,2), (1,3);
SELECT field1, field2, COUNT(*)
FROM t1 GROUP BY field1, field2;
field1	field2	COUNT(*)
1	1	2
1	2	3
1	3	1
SELECT field1, field2
FROM  t1
GROUP BY field1, field2
HAVING COUNT(*) >= ALL (SELECT fieldB 
FROM t2 WHERE fieldA = field1);
field1	field2
1	2
SELECT field1, field2
FROM  t1
GROUP BY field1, field2
HAVING COUNT(*) < ANY (SELECT fieldB 
FROM t2 WHERE fieldA = field1);
field1	field2
1	1
1	3
DROP TABLE t1, t2;
+37 −0
Original line number Diff line number Diff line
@@ -1911,4 +1911,41 @@ SELECT sql_no_cache t1.a, r.a, r.b FROM t1 LEFT JOIN t2 r

drop table t1,t2;

#
# Bug #21853: assert failure for a grouping query with
#             an ALL/ANY quantified subquery in HAVING 
#

CREATE TABLE t1 (                  
  field1 int NOT NULL,                 
  field2 int NOT NULL,                 
  field3 int NOT NULL,                 
  PRIMARY KEY  (field1,field2,field3)  
);
CREATE TABLE t2 (             
  fieldA int NOT NULL,            
  fieldB int NOT NULL,            
  PRIMARY KEY  (fieldA,fieldB)     
); 

INSERT INTO t1 VALUES
  (1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1);
INSERT INTO t2 VALUES (1,1), (1,2), (1,3);

SELECT field1, field2, COUNT(*)
  FROM t1 GROUP BY field1, field2;

SELECT field1, field2
  FROM  t1
    GROUP BY field1, field2
      HAVING COUNT(*) >= ALL (SELECT fieldB 
                                FROM t2 WHERE fieldA = field1);
SELECT field1, field2
  FROM  t1
    GROUP BY field1, field2
      HAVING COUNT(*) < ANY (SELECT fieldB 
                               FROM t2 WHERE fieldA = field1);

DROP TABLE t1, t2;

# End of 4.1 tests
+1 −0
Original line number Diff line number Diff line
@@ -387,6 +387,7 @@ void Item::split_sum_func2(THD *thd, Item **ref_pointer_array,
  }
  else if ((type() == SUM_FUNC_ITEM ||
            (used_tables() & ~PARAM_TABLE_BIT)) &&
           type() != SUBSELECT_ITEM &&
           type() != REF_ITEM)
  {
    /*