MEMORY table"is full" flag stuck when should not be
Bug #1267732 reported by
Mihaly Arva-Toth
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS | Status tracked in 5.7 | |||||
5.1 |
Invalid
|
Undecided
|
Unassigned | |||
5.5 |
Triaged
|
Medium
|
Unassigned | |||
5.6 |
Triaged
|
Medium
|
Unassigned | |||
5.7 |
Triaged
|
Medium
|
Unassigned |
Bug Description
I tried with latest 5.6.14-rel62.0-483 Percona build on Ubuntu Precise.
Steps to reproduce:
1. Set max_heap_table_size and tmp_table_size both to 16M.
2. Create a simple MEMORY type table with one column varchar().
3. Fill this table with lot of data (INSERT).
4. When you get back "is full", DELETE some rows for example 100.
5. At this time you should can to make new INSERT this table, because not should be full.
6. But you can not INSERT row because engine report "is full" still.
Workaround:
7. Execute ALTER TABLE <table_name> ENGINE=MEMORY; query.
8. And now you CAN insert new records.
I attached a simple Ruby test script, which does same things above.
tags: |
added: memory-se removed: memory-table |
To post a comment you must log in.
I was able to reproduce on Percona Servers 5.5.35-33.0 and 5.6.15-63.0, can't reproduce on PS 5.1.73-rel14.11
Note: I did DROP TABLE IF EXISTS test before doing the procedure on 5.5 and 5.6.
mysql> select @@tmp_table_size; ------- -----+ ------- -----+ ------- -----+
+------
| @@tmp_table_size |
+------
| 16777216 |
+------
1 row in set (0.00 sec)
mysql> select @@max_heap_ table_size; ------- ------- ---+ table_size | ------- ------- ---+ ------- ------- ---+
+------
| @@max_heap_
+------
| 16777216 |
+------
1 row in set (0.00 sec)
See attachment for test results.