Bug #45916 crash with subpartitioning
Submitted: 2 Jul 2009 15:08 Modified: 5 Aug 2009 14:54
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Partitions Severity:S1 (Critical)
Version:5.1.21, 5.1.30, 5.1.34, 5.1.37 OS:Any
Assigned to: Assigned Account CPU Architecture:Any
Tags: regression

[2 Jul 2009 15:08] Shane Bester
Description:
5.1.37 stack trace:

mysqld.exe!my_strnxfrm_simple()[ctype-simple.c:91]
mysqld.exe!copy_to_part_field_buffers()[sql_partition.cc:2500]
mysqld.exe!get_part_id_charset_func_all()[sql_partition.cc:2599]
mysqld.exe!ha_partition::write_row()[ha_partition.cc:2978]
mysqld.exe!handler::ha_write_row()[handler.cc:4599]
mysqld.exe!copy_data_between_tables()[sql_table.cc:7575]
mysqld.exe!mysql_alter_table()[sql_table.cc:7024]
mysqld.exe!mysql_execute_command()[sql_parse.cc:2860]
mysqld.exe!mysql_parse()[sql_parse.cc:5933]
mysqld.exe!dispatch_command()[sql_parse.cc:1213]
mysqld.exe!do_command()[sql_parse.cc:854]
mysqld.exe!handle_one_connection()[sql_connect.cc:1127]
mysqld.exe!pthread_start()[my_winthread.c:85]
mysqld.exe!_callthreadstart()[thread.c:293]
mysqld.exe!_threadstart()[thread.c:277]
kernel32.dll!FlsSetValue()
t some variables.
s may be invalid and cause the dump to abort...
t 05E635F8=alter table `qa00` partition by range(dayofmonth(c4))

How to repeat:
drop table if exists `qa00`;
create table `qa00` (`c1` char(1),`c4` char(90)) engine=myisam default charset=latin1;
insert into `qa00` values ('a','aaaaaaaa');
insert into `qa00` values ('b','bbbbbbbb');
alter table `qa00` partition by range(dayofmonth(c4))
subpartition by hash(day(c1))
subpartitions 1 (partition `p353` values less than maxvalue);
[2 Jul 2009 15:13] Valeriy Kravchuk
Thank you for the bug report. Verified just as described with recent 5.1.37-debug from bzr on Mac OS X. Stack trace looks a bit different though:

stack_bottom = 0xb026af64 thread_stack 0x30000
0   mysqld                              0x00562b38 my_print_stacktrace + 44
1   mysqld                              0x000f6b5c handle_segfault + 854
2   libSystem.B.dylib                   0x940472bb _sigtramp + 43
3   ???                                 0xffffffff 0x0 + 4294967295
4   mysqld                              0x0000f39a _Z22partition_key_modifiedP8st_tablePK9st_bitmap + 1844
5   mysqld                              0x0000f4db _Z22partition_key_modifiedP8st_tablePK9st_bitmap + 2165
6   mysqld                              0x0024f65f _ZN12ha_partition9write_rowEPh + 433
7   mysqld                              0x00247660 _ZN7handler12ha_write_rowEPh + 122
8   mysqld                              0x00268dd3 _Z23mysql_create_like_tableP3THDP10TABLE_LISTS2_P24st_ha_create_information + 4523
9   mysqld                              0x0026b2fd _Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb + 8441
10  mysqld                              0x00110e99 _Z21mysql_execute_commandP3THD + 10695
11  mysqld                              0x001190aa _Z11mysql_parseP3THDPKcjPS2_ + 580
12  mysqld                              0x00119e10 _Z16dispatch_command19enum_server_commandP3THDPcj + 2992
13  mysqld                              0x0011b100 _Z10do_commandP3THD + 650
14  mysqld                              0x001062c2 handle_one_connection + 366
15  libSystem.B.dylib                   0x9400c095 _pthread_start + 321
16  libSystem.B.dylib                   0x9400bf52 thread_start + 34
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 0x1074828 = alter table `qa00` partition by range(dayofmonth(c4))
subpartition by hash(day(c1))
subpartitions 1 (partition `p353` values less than maxvalue)
[3 Jul 2009 7:36] MySQL Verification Team
this regression was introduced in 5.1.21.
[5 Aug 2009 14:54] Mattias Jonsson
Duplicate of bug#42849. (dayofmonth should not be possible with other than DATE/DATETIME types).