Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 10.0.10
-
Fix Version/s: 10.0.11
-
Component/s: None
-
Labels:
-
Environment:Mac OS X, CentOS 6.5
Description
I have a table with a couple million rows in it:
CREATE TABLE `big_table` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `c1` char(32) DEFAULT NULL, `c2` char(32) DEFAULT NULL, `c3` char(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Each row of the table has different values in the character columns, but all three character columns are the same for each row:
mysql 10.0.10-MariaDB (root) [test]> select * from big_table limit 10; +---------+----------------------------------+----------------------------------+----------------------------------+ | id | c1 | c2 | c3 | +---------+----------------------------------+----------------------------------+----------------------------------+ | 1960001 | a64f35b091f92301e81abd6c881efa4c | a64f35b091f92301e81abd6c881efa4c | a64f35b091f92301e81abd6c881efa4c | | 1960002 | 3cddf70e775e566a270b3a80ebeb635f | 3cddf70e775e566a270b3a80ebeb635f | 3cddf70e775e566a270b3a80ebeb635f | | 1960003 | f3f75c6448ae94cc20c78bcff17b0d92 | f3f75c6448ae94cc20c78bcff17b0d92 | f3f75c6448ae94cc20c78bcff17b0d92 | | 1960004 | f0f39711ef82cb8f99443b59ad12f940 | f0f39711ef82cb8f99443b59ad12f940 | f0f39711ef82cb8f99443b59ad12f940 |
I tried creating a really simple pivot table:
create table big_table_pivot engine=connect table_type=pivot tabname=big_table;
Shortly after executing that create table statement, mysqld crashes:
#0 0x00007ffff6a907fe in __longjmp () from /lib64/libc.so.6 #1 0x4830f0d22fbc1ec0 in ?? ()
It crashes even after removing quite a lot of rows. Now with <200,000 rows in the table, the CREATE TABLE statement appears to be hanging, rather than crashing.
Gliffy Diagrams
Attachments
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
Well, PIVOT is probably not meant to be used on very big tables. It requires a lot of storage to find the distinct PIVOT column names and, if there are many, can produce tables with too many columns.
However, a bug caused exhausted memory to crash the server instead of raising an error condition with a proper message.
This was fixed and it should not crash anymore.
By the way, it is not hanging on big tables but just takes a very long time.