Bug#45989 memory leak after explain encounters an error in the query
Memory allocated in TMP_TABLE_PARAM::copy_field is not cleaned up. The fix is to clean up TMP_TABLE_PARAM::copy_field array in JOIN::destroy.
This commit is contained in:
parent
eebffb422b
commit
e1d49b8143
@ -159,3 +159,11 @@ CREATE TABLE t1 (a INT PRIMARY KEY);
|
|||||||
EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
|
EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
|
||||||
ERROR HY000: Key 'a' doesn't exist in table 't1'
|
ERROR HY000: Key 'a' doesn't exist in table 't1'
|
||||||
DROP 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;
|
||||||
|
@ -135,5 +135,16 @@ EXPLAIN EXTENDED SELECT COUNT(a) FROM t1 USE KEY(a);
|
|||||||
|
|
||||||
DROP TABLE t1;
|
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.
|
# End of 5.0 tests.
|
||||||
|
@ -2176,7 +2176,7 @@ JOIN::destroy()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
tmp_join->tmp_join= 0;
|
tmp_join->tmp_join= 0;
|
||||||
tmp_table_param.copy_field=0;
|
tmp_table_param.cleanup();
|
||||||
DBUG_RETURN(tmp_join->destroy());
|
DBUG_RETURN(tmp_join->destroy());
|
||||||
}
|
}
|
||||||
cond_equal= 0;
|
cond_equal= 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user