Bug #58399 create table .. select crashes with when KILL_BAD_DATA is returned, part II
Submitted: 22 Nov 2010 19:06 Modified: 17 May 2011 21:35
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Won't fix Impact on me:
None 
Category:MySQL Server: DDL Severity:S1 (Critical)
Version:5.1.53-debug, 5.1.54-debug OS:Any
Assigned to: CPU Architecture:Any
Tags: assertion, KILL_BAD_DATA, regression

[22 Nov 2010 19:06] Shane Bester
Description:
this is not the same as bug 55826

Version: '5.1.53-enterprise-gpl-advanced-debug'  socket: ''  port: 3306  MySQL Enterprise Server - Advanced Edition Debug (GPL)
Assertion failed: ! is_set(), file .\sql_class.cc, line 501
mysqld-debug.exe!my_sigabrt_handler()[mysqld.cc:2086]
mysqld-debug.exe!raise()[winsig.c:597]
mysqld-debug.exe!abort()[abort.c:78]
mysqld-debug.exe!_wassert()[assert.c:212]
mysqld-debug.exe!Diagnostics_area::set_ok_status()[sql_class.cc:501]
mysqld-debug.exe!my_ok()[sql_class.h:2406]
mysqld-debug.exe!select_insert::send_eof()[sql_insert.cc:3312]
mysqld-debug.exe!select_create::send_eof()[sql_insert.cc:3909]
mysqld-debug.exe!do_select()[sql_select.cc:11199]
mysqld-debug.exe!JOIN::exec()[sql_select.cc:2334]
mysqld-debug.exe!mysql_select()[sql_select.cc:2546]
mysqld-debug.exe!handle_select()[sql_select.cc:269]
mysqld-debug.exe!mysql_execute_command()[sql_parse.cc:2785]
mysqld-debug.exe!mysql_parse()[sql_parse.cc:6072]
mysqld-debug.exe!dispatch_command()[sql_parse.cc:1263]
mysqld-debug.exe!do_command()[sql_parse.cc:889]
mysqld-debug.exe!handle_one_connection()[sql_connect.cc:1136]
mysqld-debug.exe!pthread_start()[my_winthread.c:85]
mysqld-debug.exe!_callthreadstart()[thread.c:295]
mysqld-debug.exe!_threadstart()[thread.c:277]

5.0.92, 5.6.1, 5.5.8 was not affected.
only affects 5.1 debug builds.

How to repeat:
on a 5.1 debug build:

drop table if exists `t1`;
create table `t1`(`a` int)engine=innodb;
set sql_mode='strict_all_tables';
set storage_engine='myisam';
drop temporary table if exists `tmp`;
create temporary table `tmp` select adddate('',
(select @a:=`a` from `t1`)) as `dr`
from (select count(*)) as `d`
group by 1 having `dr`;
[22 Nov 2010 19:25] Sveta Smirnova
Thank you for the report.

Verified as described. Version 5.0 is not affected.

mysql-trunk does not crash, but fails with:

mysqltest: At line 8: query 'create temporary table `tmp` select adddate('',
(select @a:=`a` from `t1`)) as `dr`
from (select count(*)) as `d`
group by 1 having `dr`' failed: 1292: Incorrect datetime value: ''
[22 Nov 2010 19:26] MySQL Verification Team
Thank you for the bug report.

000000013FBA3B75    mysqld.exe!my_sigabrt_handler()[mysqld.cc:2086]
000000013FB5AE62    mysqld.exe!raise()[winsig.c:597]
000000013FB62B33    mysqld.exe!abort()[abort.c:78]
000000014010E27F    mysqld.exe!_wassert()[assert.c:163]
000000013FC42C1C    mysqld.exe!Diagnostics_area::set_ok_status()[sql_class.cc:499]
000000013FBEA23C    mysqld.exe!my_ok()[sql_class.h:2407]
000000013FEC7342    mysqld.exe!select_insert::send_eof()[sql_insert.cc:3314]
000000013FEC983D    mysqld.exe!select_create::send_eof()[sql_insert.cc:3911]
000000013FE1096C    mysqld.exe!do_select()[sql_select.cc:11181]
000000013FDF6251    mysqld.exe!JOIN::exec()[sql_select.cc:2322]
000000013FDF6DAD    mysqld.exe!mysql_select()[sql_select.cc:2527]
000000013FDED697    mysqld.exe!handle_select()[sql_select.cc:269]
000000013FD50342    mysqld.exe!mysql_execute_command()[sql_parse.cc:2784]
000000013FD5BB00    mysqld.exe!mysql_parse()[sql_parse.cc:6055]
000000013FD4C612    mysqld.exe!dispatch_command()[sql_parse.cc:1262]
000000013FD4B8B4    mysqld.exe!do_command()[sql_parse.cc:888]
000000013FC12ED8    mysqld.exe!handle_one_connection()[sql_connect.cc:1136]
000000014013F798    mysqld.exe!pthread_start()[my_winthread.c:85]
0000000140117C35    mysqld.exe!_callthreadstart()[thread.c:295]
0000000140117C07    mysqld.exe!_threadstart()[thread.c:277]
0000000076D4BE3D    kernel32.dll!BaseThreadInitThunk()
0000000076E86A51    ntdll.dll!RtlUserThreadStart()
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 00000000003DF1C8=create temporary table `tmp` select adddate('',
(select @a:=`a` from `t1`)) as `dr`
from (select count(*)) as `d`
group by 1 having `dr`
thd->thread_id=1
thd->killed=KILL_BAD_DATA
[17 May 2011 21:35] Omer Barnir
Issue is limited to 5.1 and does not exist in 5.5.
[18 May 2011 5:52] MySQL Verification Team
i'm fine with not fixing this in 5.1, but please make sure there is a regression test in 5.5 and 5.6 so this doesn't reappear.