#At file:///home/kgeorge/mysql/work/B45989-5.1-bugteam/ based on revid:luis.soares@stripped
3320 Georgi Kodinov 2010-01-18
Bug #45989 take 2 : memory leak after explain encounters an
error in the query.
Fixes a leak after materializing a GROUP BY subquery to a
temp table when the subquery has a blob column in the SELECT
list.
Fixed by correctly destructing temporary buffers after doing
the conversion.
modified:
mysql-test/r/subselect.result
mysql-test/t/subselect.test
sql/sql_select.cc
=== modified file 'mysql-test/r/subselect.result'
--- a/mysql-test/r/subselect.result 2010-01-13 10:28:42 +0000
+++ b/mysql-test/r/subselect.result 2010-01-18 15:50:46 +0000
@@ -4602,4 +4602,16 @@ SELECT 1 FROM t1 GROUP BY
1
1
DROP TABLE t1;
+#
+# Bug #45989 take 2 : memory leak after explain encounters an
+# error in the query
+#
+CREATE TABLE t1(a LONGTEXT);
+INSERT INTO t1 VALUES (repeat('a',@@global.max_allowed_packet));
+INSERT INTO t1 VALUES (repeat('b',@@global.max_allowed_packet));
+EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
+(SELECT DISTINCTROW a AS away FROM t1 GROUP BY a WITH ROLLUP) AS d1
+WHERE t1.a = d1.a;
+ERROR 42S22: Unknown column 'd1.a' in 'where clause'
+DROP TABLE t1;
End of 5.1 tests.
=== modified file 'mysql-test/t/subselect.test'
--- a/mysql-test/t/subselect.test 2010-01-13 10:28:42 +0000
+++ b/mysql-test/t/subselect.test 2010-01-18 15:50:46 +0000
@@ -3585,4 +3585,21 @@ SELECT 1 FROM t1 GROUP BY
(SELECT LAST_INSERT_ID() FROM t1 ORDER BY MIN(a) ASC LIMIT 1);
DROP TABLE t1;
+--echo #
+--echo # Bug #45989 take 2 : memory leak after explain encounters an
+--echo # error in the query
+--echo #
+
+CREATE TABLE t1(a LONGTEXT);
+INSERT INTO t1 VALUES (repeat('a',@@global.max_allowed_packet));
+INSERT INTO t1 VALUES (repeat('b',@@global.max_allowed_packet));
+
+--error ER_BAD_FIELD_ERROR
+EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
+(SELECT DISTINCTROW a AS away FROM t1 GROUP BY a WITH ROLLUP) AS d1
+WHERE t1.a = d1.a;
+
+DROP TABLE t1;
+
+
--echo End of 5.1 tests.
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2010-01-13 10:28:42 +0000
+++ b/sql/sql_select.cc 2010-01-18 15:50:46 +0000
@@ -5824,6 +5824,8 @@ JOIN::make_simple_join(JOIN *parent, TAB
const_table_map= 0;
tmp_table_param.field_count= tmp_table_param.sum_func_count=
tmp_table_param.func_count= 0;
+ if (tmp_table_param.copy_field)
+ delete [] tmp_table_param.copy_field;
tmp_table_param.copy_field= tmp_table_param.copy_field_end=0;
first_record= sort_and_group=0;
send_records= (ha_rows) 0;
Attachment: [text/bzr-bundle] bzr/joro@sun.com-20100118155046-v6hvlyfmitcyep8p.bundle
Thread |
---|
• bzr commit into mysql-5.1-bugteam branch (joro:3320) Bug#45989 | Georgi Kodinov | 19 Jan |