| Bug #41802 | SP with multitable update with derived table + flush tables crashes server | ||
|---|---|---|---|
| Submitted: | 31 Dec 2008 7:00 | Modified: | 31 Jan 2010 23:10 |
| Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: Locking | Severity: | S1 (Critical) |
| Version: | 5.0.74,5.1.25, 5.1.26,5.1.30 | OS: | Any |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
| Tags: | regression, valgrind | ||
[2 Jan 2009 8:33]
MySQL Verification Team
testcase!
Attachment: bug41802.c (text/plain), 5.99 KiB.
[2 Jan 2009 8:36]
MySQL Verification Team
valgrind errors before crash. ignore the memory comment earlier - it was SP cache, and not a leak.
Attachment: bug41802_valgrind_errors.txt (text/plain), 9.99 KiB.
[2 Jan 2009 8:42]
MySQL Verification Team
this bug looks strikingly similar to bug #38499
[2 Jan 2009 12:48]
MySQL Verification Team
very hard to repeat on 5.0.74, but I managed to do it twice. 5.1.22 didn't appear to have this bug, hence it's a regression somewhere. 5.1.30 crashes within seconds.
[31 Jan 2010 23:10]
Davi Arnaut
Closed as a duplicate of Bug#48157.

Description: 14005BE5A mysqld.exe!Item_field::result_type()[item.h:1449] 1401DC246 mysqld.exe!check_simple_equality()[sql_select.cc:7339] 1401DC845 mysqld.exe!check_equality()[sql_select.cc:7502] 1401DC955 mysqld.exe!build_equal_items_for_cond()[sql_select.cc:7604] 1401DCF3F mysqld.exe!build_equal_items()[sql_select.cc:7791] 1401DFC0D mysqld.exe!optimize_cond()[sql_select.cc:8881] 1401E016F mysqld.exe!JOIN::optimize()[sql_select.cc:821] 1401E39D5 mysqld.exe!mysql_select()[sql_select.cc:2347] 14018021B mysqld.exe!mysql_derived_filling()[sql_derived.cc:293] 140180050 mysqld.exe!mysql_handle_derived()[sql_derived.cc:56] 140212879 mysqld.exe!mysql_multi_update_prepare()[sql_update.cc:1170] 14019EC40 mysqld.exe!mysql_execute_command()[sql_parse.cc:2980] 14013A548 mysqld.exe!sp_instr_stmt::exec_core()[sp_head.cc:2900] 14013DCC5 mysqld.exe!sp_lex_keeper::reset_lex_and_exec_core()[sp_head.cc:2728] 14013DEC6 mysqld.exe!sp_instr_stmt::execute()[sp_head.cc:2844] 14013F8E5 mysqld.exe!sp_head::execute()[sp_head.cc:1250] 140140CAF mysqld.exe!sp_head::execute_procedure()[sp_head.cc:1977] 1401A0D57 mysqld.exe!mysql_execute_command()[sql_parse.cc:4235] 1401A2F06 mysqld.exe!mysql_parse()[sql_parse.cc:5791] 1401A3C1A mysqld.exe!dispatch_command()[sql_parse.cc:1202] 1401A4CD7 mysqld.exe!do_command()[sql_parse.cc:857] 140246327 mysqld.exe!handle_one_connection()[sql_connect.cc:1115] 1402B82C5 mysqld.exe!pthread_start()[my_winthread.c:85] 1403CAC37 mysqld.exe!_callthreadstart()[thread.c:295] 1403CAD05 mysqld.exe!_threadstart()[thread.c:275] 077D6B69A kernel32.dll!BaseThreadStart() How to repeat: query that crashed was executed by a stored procedure, in this form: UPDATE xx, (SELECT xx FROM xx WHERE xx = NAME_CONST('xx',0) AND `xx` in (x,x,x,x,xx) and xx <> NAME_CONST('x',-xx)) x SET x = x WHERE x = NAME_CONST('xx',0) AND xx = x AND x=0