Bug #52122 | crash when converting derived table column to decimal | ||
---|---|---|---|
Submitted: | 17 Mar 2010 3:29 | Modified: | 12 Apr 2010 14:28 |
Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S1 (Critical) |
Version: | 5.6.99-m4-debug, mysql-6.0-codebase | OS: | Any |
Assigned to: | Assigned Account | CPU Architecture: | Any |
Tags: | regression |
[17 Mar 2010 3:29]
Shane Bester
[17 Mar 2010 4:05]
MySQL Verification Team
#testcase (run in valgrind if no crash, or run multiple times) set sql_mode=''; drop table if exists t25,t99; create table `t25` ( `col0` varchar(139), `col1` bit(57) ) engine=myisam default charset=latin1; create table `t99` ( `col0` year(4), `col3` timestamp ) engine=myisam ; insert into `t25` values ('0','\0\0\0\0\0\0\0\0'); insert into `t25` values ('',null); insert into `t99` values (2010,'2010-03-16 23:14:31'); insert into `t99` values (2010,'2010-03-16 23:14:31'); select 1 from t25 as t25 right outer join ( select `t99`.`col0` as col0 from t99 as t99 right join t25 using(col0) group by t99.col3 ) as d_2277_1_134 on from_days(t25.col1) + cast(d_2277_1_134.col0 as decimal);
[17 Mar 2010 4:09]
MySQL Verification Team
valgrind errors after a few executions of testcase
Attachment: bug52122_5.6.99-m4-valgrind-output.txt (text/plain), 89.67 KiB.
[17 Mar 2010 4:24]
Valeriy Kravchuk
Verified just as described also with mysql-6.0-codebase on Mac OS X: ... thd: 0x1a5e018 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = 0xb0c2ef34 thread_stack 0x30c00 0 mysqld 0x005d7722 my_print_stacktrace + 44 1 mysqld 0x001096d4 handle_segfault + 884 2 libSystem.B.dylib 0x940472bb _sigtramp + 43 3 ??? 0xffffffff 0x0 + 4294967295 4 mysqld 0x005959c1 decimal2double + 80 5 mysqld 0x00039298 _Z17my_decimal2doublejPK10my_decimalPd + 24 6 mysqld 0x0002506a _ZN18Item_cache_decimal8val_realEv + 184 7 mysqld 0x00049c91 _ZN14Item_func_plus7real_opEv + 77 8 mysqld 0x00053a43 _ZN19Item_func_numhybrid7val_intEv + 335 9 mysqld 0x000b2a53 _ZN19Item_func_trig_cond7val_intEv + 47 10 mysqld 0x0019e97d _Z18do_sj_dups_weedoutP3THDP12SJ_TMP_TABLE + 1121 11 mysqld 0x0019ef14 _Z10sub_selectP4JOINP13st_join_tableb + 454 12 mysqld 0x001ac99e _ZN4JOIN9join_freeEv + 1572 13 mysqld 0x001c65c7 _ZN4JOIN4execEv + 8997 14 mysqld 0x001c0d1b _Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex + 797 15 mysqld 0x001c691c _Z13handle_selectP3THDP3LEXP13select_resultm + 556 16 mysqld 0x0011c9da _Z15update_precheckP3THDP10TABLE_LIST + 1072 17 mysqld 0x0011ea1d _Z21mysql_execute_commandP3THD + 3137 18 mysqld 0x0012760d _Z11mysql_parseP3THDPKcjPS2_ + 723 19 mysqld 0x0012820e _Z16dispatch_command19enum_server_commandP3THDPcj + 2618 20 mysqld 0x00129659 _Z10do_commandP3THD + 621 21 mysqld 0x00114f7e _Z24do_handle_one_connectionP3THD + 414 22 mysqld 0x00115043 handle_one_connection + 37 23 libSystem.B.dylib 0x9400c095 _pthread_start + 321 24 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 0x1a86e28 = select 1 from t25 as t25 right outer join ( select `t99`.`col0` as col0 from t99 as t99 right join t25 using(col0) group by t99.col3 ) as d_2277_1_134 on from_days(t25.col1) + cast(d_2277_1_134.col0 as decimal)
[29 Mar 2010 19:30]
Guilhem Bichot
regression source is the same as for BUG#52168: epotemkin@mysql.com-20091201212551-amf9utmatlvsbbar (was fix for Bug#33546: Slowdown on re-evaluation of constant expressions)
[30 Mar 2010 11:28]
Manyi Lu
See also 52168
[12 Apr 2010 14:28]
Øystein Grøvlen
This is the same issue as Bug#52168 except that here the offending function is Item_cache_decimal::val_real(), instead of Item_cache_decimal::val_int(). I will fix both issues as part of Bug#52168, and include the following simplified test case for the val_real() issue: create table t1 (col0 integer, col1 real); create table t2 (col0 integer); insert into t1 values (0, 0.0), (null, null); insert into t2 values (1); select 1 from t1 join ( select t2.col0 from t2 right join t1 using(col0) group by t2.col0 ) as subq where t1.col1 + cast(subq.col0 as decimal); drop table t1, t2;
[15 Jun 2010 8:12]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100615080459-smuswd9ooeywcxuc) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (merge vers: 5.1.47) (pib:16)
[15 Jun 2010 8:27]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100615080558-cw01bzdqr1bdmmec) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (pib:16)