DML on temporary table tries to append keys for provider
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| MySQL patches by Codership |
High
|
Seppo Jaakola | ||
| 5.5 |
High
|
Seppo Jaakola | ||
| Percona XtraDB Cluster moved to https://jira.percona.com/projects/PXC |
Fix Released
|
High
|
Unassigned |
Bug Description
any update/
Changed in codership-mysql: | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Seppo Jaakola (seppo-jaakola) |
milestone: | none → 5.5.29-24.8 |
Seppo Jaakola (seppo-jaakola) wrote : | #2 |
Fix was pushed in wsrep-23 in revision: http://
The fix avoids provider key append if affected table is temporary.
However, when testing with the fix build, the mysqld memory image keeps on growing after DML operations on temporary table, and these allocations do not seem to be released when the temporary table is dropped. This behavior is only with InnoDB temporary tables, MyISAM temporary tables behave as expected. It may be that InnoDB temporary table implementation has a memory leak problem, here is one potential bug tracker to follow: http://
Changed in percona-xtradb-cluster: | |
milestone: | none → 5.5.29-23.7.2 |
importance: | Undecided → High |
status: | Confirmed → Fix Committed |
@Seppo,
During this leak that you noticed with InnoDB temporary tables, did you see 'FLUSH TABLES' freeing any memory
I came across a similar bug here https:/
Changed in percona-xtradb-cluster: | |
status: | Fix Committed → Fix Released |
@Seppo,
I have reported a separate XtraDB bug here - https:/
Alex Yurchenko (ayurchen) wrote : | #5 |
fix released in 23.7.3
The fix for this issue is causing https:/
Shahriyar Rzayev (rzayev-sehriyar) wrote : | #7 |
Percona now uses JIRA for bug reports so this bug report is migrated to: https:/
The bug is easy to reproduce. Here is a simplified version:
-- create source table and sample data
CREATE TABLE source (id BIGINT, data BIGINT, PRIMARY KEY(id, data), INDEX (data));
INSERT INTO source (id, data) VALUES (1, 1), (2, 2), (3, 2), (4, 2), (5, 3);
-- create temporary table and insert-select into it
CREATE TEMPORARY TABLE temp (id BIGINT, data BIGINT, PRIMARY KEY (id, data));
-- this leaks
INSERT INTO temp (id, data) SELECT id, data FROM source WHERE data = 2;