| Bug #8216 | server crash, with ifnull, subquery or rand(), aggregate, where and having | ||
|---|---|---|---|
| Submitted: | 31 Jan 2005 18:03 | Modified: | 9 Feb 2005 11:10 |
| Reporter: | Martin Friebe (Gold Quality Contributor) (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S2 (Serious) |
| Version: | 4.1.9 | OS: | |
| Assigned to: | Michael Widenius | CPU Architecture: | Any |
[31 Jan 2005 18:03]
Martin Friebe
[31 Jan 2005 18:13]
Martin Friebe
#it also happens, with 0 row subquery select a, sum(1) r1, ifnull((select null from sub1 i where i.a<>o.a),1) r2 from sub1 o where a = 1 group by a having r1=1 and r2=1; # # with a subquery that should be fine, sum() in the subquery should return 1 row select a, sum(1) r1, ifnull((select sum(1) from sub1 i where i.a=o.a),1) r2 from sub1 o where a = 1 group by a having r1=1 and r2=1; # with group select a, sum(1) r1, ifnull((select sum(1) from sub1 i where i.a=o.a group by a),1) r2 from sub1 o where a = 1 group by a having r1=1 and r2=1; # group by const select a, sum(1) r1, ifnull((select sum(1) from sub1 i where i.a=o.a group by 'X'),1) r2 from sub1 o where a = 1 group by a having r1=1 and r2=1;
[31 Jan 2005 18:20]
Heikki Tuuri
Hi!
Crashes with 4.1.10 on Linux, with both a MyISAM and InnoDB table. Stack trace below.
Regards,
Heikki
mysql> create table sub1 (a integer, b integer); insert into sub1 values (1,2),(
1,3);
Query OK, 0 rows affected (0.01 sec)
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql>
mysql> select a, sum(1) r1, ifnull((select null from sub1 i where i.a=o.a),1) r
2 from
-> sub1 o where a = 1 group by a having r1=1 and r2=1;
(gdb) run
Starting program: /home/heikki/mysql-4.1/sql/mysqld
[New Thread 16384 (LWP 15043)]
InnoDB: !!!!!!!!!!!!!! UNIV_DEBUG switched on !!!!!!!!!!!!!!!
[New Thread 32769 (LWP 15045)]
[New Thread 16386 (LWP 15046)]
[New Thread 32771 (LWP 15047)]
[New Thread 49156 (LWP 15048)]
[New Thread 65541 (LWP 15049)]
050131 19:36:51 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
050131 19:36:51 InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 1323287644.
InnoDB: Doing recovery: scanned up to log sequence number 0 1323289167
050131 19:36:51 InnoDB: Starting an apply batch of log records to the database.
..
InnoDB: Progress in percents: 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
InnoDB: Last MySQL binlog file position 0 79, file name ./binlog.000001
050131 19:36:52 InnoDB: Flushing modified pages from the buffer pool...
[New Thread 81926 (LWP 15050)]
[New Thread 98311 (LWP 15051)]
[New Thread 114696 (LWP 15052)]
050131 19:36:55 InnoDB: Started; log sequence number 0 1323289167
[New Thread 131081 (LWP 15053)]
050131 19:36:56 [Warning] mysql.user table is not updated to new password format
; Disabling new password usage until mysql_fix_privilege_tables is run
/home/heikki/mysql-4.1/sql/mysqld: ready for connections.
Version: '4.1.10-debug-log' socket: '/home/heikki/bugsocket' port: 3307 Sourc
e distribution
[New Thread 147466 (LWP 15054)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 147466 (LWP 15054)]
0x083df898 in my_strntod_8bit (cs=0x8576da0, str=0x0, length=0, end=0x0,
err=0x8bccc9c) at ctype-simple.c:789
789 if (length == INT_MAX32 || str[length] == 0)
Current language: auto; currently c
(gdb) bt
#0 0x083df898 in my_strntod_8bit (cs=0x8576da0, str=0x0, length=0, end=0x0,
err=0x8bccc9c) at ctype-simple.c:789
#1 0x080eea37 in Item_copy_string::val() (this=0x8576da0) at sql_string.h:81
#2 0x080eb795 in Item::val_result() (this=0x8bccc9c) at item.h:222
#3 0x080ede79 in Item_ref::val() (this=0x8bd3900) at item.h:868
#4 0x0810af68 in Arg_comparator::compare_real() (this=0x8bd3a20)
at item_cmpfunc.cc:396
#5 0x0810ba2e in Item_func_eq::val_int() (this=0x8bccc9c) at item_cmpfunc.h:63
#6 0x080faa20 in Item_int_func::val_str(String*) (this=0x8bd39b8,
str=0x8bd4c94) at item_func.cc:525
#7 0x080e6bfc in Item_copy_string::copy() (this=0x8bd4c90) at item.cc:1268
#8 0x081b8852 in copy_fields(TMP_TABLE_PARAM*) (param=0x8bd4450)
at sql_select.cc:8608
#9 0x081b46b6 in end_send_group (join=0x8bd3bd8, join_tab=0x8bd4c40,
end_of_records=false) at sql_select.cc:6510
#10 0x081b30ad in sub_select (join=0x8bd3bd8, join_tab=0x8bd4b00,
end_of_records=160) at sql_select.cc:5808
#11 0x081b2cb8 in do_select (join=0x8bd3bd8, fields=0x8bd4b00, table=0x0,
procedure=0x8bccc9c) at sql_select.cc:5692
#12 0x081a84f2 in JOIN::exec() (this=0x8bd3bd8) at sql_select.cc:1479
#13 0x081a895e in mysql_select(THD*, Item***, st_table_list*, unsigned, List<Ite
m>&, Item*, unsigned, st_order*, st_order*, Item*, st_order*, unsigned long, sel
ect_result*, st_select_lex_unit*, st_select_lex*) (thd=0x8bd54a0,
rref_pointer_array=0x8bd56b0, tables=0x8bd3510, wild_num=0,
fields=@0x8bccc9c, conds=0x8bd3630, og_num=1, order=0x0, group=0x8bd3758,
having=0x8bd3a70, proc_param=0x0, select_options=8669696,
result=0x8bd3bc8, unit=0x8bd54e8, select_lex=0x8bd55c8)
at sql_select.cc:1600
#14 0x081a4b77 in handle_select(THD*, st_lex*, select_result*) (thd=0x8bd54a0,
lex=0x8bd54dc, result=0x8bd3bc8) at sql_select.cc:182
#15 0x0817ba13 in mysql_execute_command(THD*) (thd=0x8bd54a0)
at sql_parse.cc:2017
#16 0x0818103b in mysql_parse(THD*, char*, unsigned) (thd=0x8bd54a0,
inBuf=0x8bd2cf0 "select a, sum(1) r1, ifnull((select null from sub1 i where
i.a=o.a),1) r2 from\nsub1 o where a = 1 group by a having r1=1 and r2=1",
length=146625756) at sql_parse.cc:4091
#17 0x0817a382 in dispatch_command(enum_server_command, THD*, char*, unsigned)
(command=COM_QUERY, thd=0x8bd54a0, packet=0x8bcecb9 "", packet_length=132)
at sql_parse.cc:1474
#18 0x08179ca1 in do_command(THD*) (thd=0x8bd54a0) at sql_parse.cc:1288
#19 0x0817910f in handle_one_connection (arg=0x8bccc9c) at sql_parse.cc:1020
#20 0x40062f60 in pthread_start_thread () from /lib/i686/libpthread.so.0
#21 0x400630fe in pthread_start_thread_event () from /lib/i686/libpthread.so.0
#22 0x401f5327 in clone () from /lib/i686/libc.so.6
(gdb)
[4 Feb 2005 21:30]
Oleksandr Byelkin
problem is not subquery dependent, following query fail in the same way: select a, sum(1) r1, ifnull(rand(),1) r2 from sub1 o where a = 1 group by a having r1=1 and r2=1;
[7 Feb 2005 15:34]
Michael Widenius
Bug also appear in 4.0 but becasue the bug fix is not trivial, we will fix it in 4.1 and only document it in 4.0
[7 Feb 2005 23:07]
Oleksandr Byelkin
ChangeSet 1.2170 05/02/07 18:13:57 monty@mysql.com +8 -0 Fixed bug in HAVING when refering to RAND() through alias (BUG 8216) looks good
[9 Feb 2005 11:10]
Michael Widenius
Fix will be in 4.1.11
