diff options
author | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2009-09-04 12:39:56 +0500 |
---|---|---|
committer | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2009-09-04 12:39:56 +0500 |
commit | 79b5063ddf9eedab8a5e9de7ef9815c4ef9aa9c7 (patch) | |
tree | d6f739c91f36fac30c9197389a91a41b71818ef4 | |
parent | 7bfdc5bbf5cd0ffb9e35d19d80ac9aa527938ba1 (diff) | |
parent | 643fbe4234a06e51746c8912223652a3b41fe133 (diff) | |
download | mariadb-git-79b5063ddf9eedab8a5e9de7ef9815c4ef9aa9c7.tar.gz |
5.0-bugteam->5.1-bugteam merge
-rw-r--r-- | mysql-test/r/explain.result | 8 | ||||
-rw-r--r-- | mysql-test/t/explain.test | 11 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
3 files changed, 20 insertions, 1 deletions
diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result index a81ff554ca2..96fcbc33d3f 100644 --- a/mysql-test/r/explain.result +++ b/mysql-test/r/explain.result @@ -159,6 +159,14 @@ CREATE TABLE t1 (a INT PRIMARY KEY); EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a); ERROR 42000: Key 'a' doesn't exist in table 't1' DROP TABLE t1; +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 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; # # Bug#37870: Usage of uninitialized value caused failed assertion. # diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test index 755e126baf2..18f1145a25d 100644 --- a/mysql-test/t/explain.test +++ b/mysql-test/t/explain.test @@ -135,6 +135,17 @@ EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a); DROP TABLE t1; +# +# Bug#45989 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)); +--error ER_BAD_FIELD_ERROR +EXPLAIN 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; # End of 5.0 tests. diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 1a6dc7f04c8..4e50191be6b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2252,7 +2252,7 @@ JOIN::destroy() tab->cleanup(); } tmp_join->tmp_join= 0; - tmp_table_param.copy_field=0; + tmp_table_param.cleanup(); DBUG_RETURN(tmp_join->destroy()); } cond_equal= 0; |