Commit 47cd6462 authored by Igor Babaev's avatar Igor Babaev
Browse files

Merge

parents 8ce74569 da156dde
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -4396,4 +4396,15 @@ id select_type table type possible_keys key key_len ref rows Extra
Warnings:
Note	1003	select 1 AS `1` from `test`.`t1` where <in_optimizer>(1,<exists>(select 1 AS `1` from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` having (<cache>(1) = <ref_null_helper>(1))))
DROP TABLE t1;
CREATE TABLE t1(pk int PRIMARY KEY, a int, INDEX idx(a));
INSERT INTO t1 VALUES (1, 10), (3, 30), (2, 20);
CREATE TABLE t2(pk int PRIMARY KEY, a int, b int, INDEX idxa(a));
INSERT INTO t2 VALUES (2, 20, 700), (1, 10, 200), (4, 10, 100);
SELECT * FROM t1
WHERE EXISTS (SELECT DISTINCT a FROM t2 WHERE t1.a < t2.a ORDER BY b);
pk	a
1	10
3	30
2	20
DROP TABLE t1,t2;
End of 5.0 tests.
+12 −0
Original line number Diff line number Diff line
@@ -3295,5 +3295,17 @@ EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a);
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a);
DROP TABLE t1;

#
# Bug #38191: Server crash with subquery containing DISTINCT and ORDER BY
#

CREATE TABLE t1(pk int PRIMARY KEY, a int, INDEX idx(a));
INSERT INTO t1 VALUES (1, 10), (3, 30), (2, 20);
CREATE TABLE t2(pk int PRIMARY KEY, a int, b int, INDEX idxa(a));
INSERT INTO t2 VALUES (2, 20, 700), (1, 10, 200), (4, 10, 100);
SELECT * FROM t1
   WHERE EXISTS (SELECT DISTINCT a FROM t2 WHERE t1.a < t2.a ORDER BY b);
DROP TABLE t1,t2;

--echo End of 5.0 tests.
+6 −0
Original line number Diff line number Diff line
@@ -6469,6 +6469,12 @@ void JOIN::cleanup(bool full)
    if (tmp_join)
      tmp_table_param.copy_field= 0;
    group_fields.delete_elements();
    /* 
      Ensure that the above delete_elements() would not be called
      twice for the same list.
    */
    if (tmp_join && tmp_join != this)
      tmp_join->group_fields= group_fields;
    /*
      We can't call delete_elements() on copy_funcs as this will cause
      problems in free_elements() as some of the elements are then deleted.