Description:
"GROUP BY <column_name> WITH ROLLUP" command crashes the server in sql_select.cc
file, Note that it hapens even with 4.1 or older clients.
Here is the server backtrace:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1104616752 (LWP 32710)]
0x08187edb in test_if_skip_sort_order (tab=0x8b96ac4, order=0x8b95c68,
select_limit=2779096485, no_changes=false)
at sql_select.cc:6389
6389 if (table->used_keys & (((key_map) 1 << ref_key)))
(gdb) bt
#0 0x08187edb in test_if_skip_sort_order (tab=0x8b96ac4, order=0x8b95c68,
select_limit=2779096485, no_changes=false)
at sql_select.cc:6389
#1 0x08188263 in create_sort_index (thd=0xa5a5a5a5, tab=0x8b96ac4, order=0x8b95c68,
filesort_limit=2779096485,
select_limit=2779096485) at sql_select.cc:6536
#2 0x0817bb34 in JOIN::exec() (this=0x8b95ca8) at sql_select.cc:1284
#3 0x0817c00c in mysql_select(THD*, Item***, st_table_list*, unsigned, List<Item>&, Item*,
unsigned, st_order*, st_order*, Item*, st_order*, unsigned long, select_result*,
st_select_lex_unit*, st_select_lex*, bool) (thd=0x8b91028,
rref_pointer_array=0xa5a5a5a5, tables=0xa5a5a5a5, wild_num=2779096485,
fields=@0xa5a5a5a5, conds=0xa5a5a5a5,
og_num=2779096485, order=0xa5a5a5a5, group=0xa5a5a5a5, having=0xa5a5a5a5,
proc_param=0xa5a5a5a5,
select_options=17339392, result=0x8b95c98, unit=0x8b912ac, select_lex=0x8b9139c,
tables_and_fields_initied=false)
at sql_select.cc:1397
#4 0x081788e0 in handle_select(THD*, st_lex*, select_result*) (thd=0x8b91028,
lex=0x8b912a0, result=0x8b95c98)
at sql_select.cc:173
#5 0x081576cf in mysql_execute_command(THD*) (thd=0x8b91028) at sql_parse.cc:2049
#6 0x0815baeb in mysql_parse(THD*, char*, unsigned) (thd=0x8b91028,
inBuf=0x8b95a08 "SELECT i, COUNT(*) FROM t GROUP BY i WITH ROLLUP",
length=146346656) at sql_parse.cc:3619
#7 0x0815573a in dispatch_command(enum_server_command, THD*, char*, unsigned)
(command=COM_QUERY, thd=0x8b91028,
packet=0x8b94f29 "SELECT i, COUNT(*) FROM t GROUP BY i WITH ROLLUP",
packet_length=49) at sql_parse.cc:1294
#8 0x08154fc2 in do_command(THD*) (thd=0x8b91028) at sql_parse.cc:1094
#9 0x081544d5 in handle_one_connection (arg=0xa5a5a5a5) at sql_parse.cc:876
#10 0x40032332 in start_thread () from /lib/tls/libpthread.so.0
How to repeat:
mysql> use test
Database changed
mysql> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE t ( i int );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t SET i = 100;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT i, COUNT(*) FROM t GROUP BY i;
+------+----------+
| i | COUNT(*) |
+------+----------+
| 100 | 1 |
+------+----------+
1 row in set (0.00 sec)
mysql> SELECT i, COUNT(*) FROM t GROUP BY i WITH ROLLUP;
ERROR 2013: Lost connection to MySQL server during query
Description: "GROUP BY <column_name> WITH ROLLUP" command crashes the server in sql_select.cc file, Note that it hapens even with 4.1 or older clients. Here is the server backtrace: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1104616752 (LWP 32710)] 0x08187edb in test_if_skip_sort_order (tab=0x8b96ac4, order=0x8b95c68, select_limit=2779096485, no_changes=false) at sql_select.cc:6389 6389 if (table->used_keys & (((key_map) 1 << ref_key))) (gdb) bt #0 0x08187edb in test_if_skip_sort_order (tab=0x8b96ac4, order=0x8b95c68, select_limit=2779096485, no_changes=false) at sql_select.cc:6389 #1 0x08188263 in create_sort_index (thd=0xa5a5a5a5, tab=0x8b96ac4, order=0x8b95c68, filesort_limit=2779096485, select_limit=2779096485) at sql_select.cc:6536 #2 0x0817bb34 in JOIN::exec() (this=0x8b95ca8) at sql_select.cc:1284 #3 0x0817c00c in mysql_select(THD*, Item***, st_table_list*, unsigned, List<Item>&, Item*, unsigned, st_order*, st_order*, Item*, st_order*, unsigned long, select_result*, st_select_lex_unit*, st_select_lex*, bool) (thd=0x8b91028, rref_pointer_array=0xa5a5a5a5, tables=0xa5a5a5a5, wild_num=2779096485, fields=@0xa5a5a5a5, conds=0xa5a5a5a5, og_num=2779096485, order=0xa5a5a5a5, group=0xa5a5a5a5, having=0xa5a5a5a5, proc_param=0xa5a5a5a5, select_options=17339392, result=0x8b95c98, unit=0x8b912ac, select_lex=0x8b9139c, tables_and_fields_initied=false) at sql_select.cc:1397 #4 0x081788e0 in handle_select(THD*, st_lex*, select_result*) (thd=0x8b91028, lex=0x8b912a0, result=0x8b95c98) at sql_select.cc:173 #5 0x081576cf in mysql_execute_command(THD*) (thd=0x8b91028) at sql_parse.cc:2049 #6 0x0815baeb in mysql_parse(THD*, char*, unsigned) (thd=0x8b91028, inBuf=0x8b95a08 "SELECT i, COUNT(*) FROM t GROUP BY i WITH ROLLUP", length=146346656) at sql_parse.cc:3619 #7 0x0815573a in dispatch_command(enum_server_command, THD*, char*, unsigned) (command=COM_QUERY, thd=0x8b91028, packet=0x8b94f29 "SELECT i, COUNT(*) FROM t GROUP BY i WITH ROLLUP", packet_length=49) at sql_parse.cc:1294 #8 0x08154fc2 in do_command(THD*) (thd=0x8b91028) at sql_parse.cc:1094 #9 0x081544d5 in handle_one_connection (arg=0xa5a5a5a5) at sql_parse.cc:876 #10 0x40032332 in start_thread () from /lib/tls/libpthread.so.0 How to repeat: mysql> use test Database changed mysql> DROP TABLE IF EXISTS t; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE t ( i int ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO t SET i = 100; Query OK, 1 row affected (0.00 sec) mysql> SELECT i, COUNT(*) FROM t GROUP BY i; +------+----------+ | i | COUNT(*) | +------+----------+ | 100 | 1 | +------+----------+ 1 row in set (0.00 sec) mysql> SELECT i, COUNT(*) FROM t GROUP BY i WITH ROLLUP; ERROR 2013: Lost connection to MySQL server during query