|
This smaller script also crashes the server:
CREATE OR REPLACE TABLE t1 (i6 inet6, a2 varchar(10));
|
INSERT INTO t1 VALUES ('::','uw'), (null,'a');
|
SELECT group_concat(coalesce(i6, a2) ORDER BY 1) FROM t1;
|
DROP TABLE t1;
|
|
|
Testcase without GROUP_CONCAT SQL. However GROUP_CONCAT is used; note stack frame #7.
CREATE TABLE t(a INET6);
|
INSERT INTO t VALUES();
|
SELECT JSON_ARRAYAGG(a ORDER BY a DESC)FROM t;
|
Leads to:
|
10.9.0 ef930dcad58ae6c3f334a32bd63e26c65fd66fa6 (Debug)
|
mysqld: /test/10.9_dbg/sql/sql_type_fixedbin.h:1204: FixedBinTypeBundle<FbtImpl>::Fbt FixedBinTypeBundle<FbtImpl>::Field_fbt::to_fbt() const [with FbtImpl = Inet6]: Assertion `!is_null()' failed.
|
|
10.9.0 ef930dcad58ae6c3f334a32bd63e26c65fd66fa6 (Debug)
|
Core was generated by `/test/MD050422-mariadb-10.9.0-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
|
Program terminated with signal SIGABRT, Aborted.
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
[Current thread is 1 (Thread 0x14cfc80e3700 (LWP 336132))]
|
(gdb) bt
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#1 0x000014cfd3b43859 in __GI_abort () at abort.c:79
|
#2 0x000014cfd3b43729 in __assert_fail_base (fmt=0x14cfd3cd9588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x564b35315c79 "!is_null()", file=0x564b35880558 "/test/10.9_dbg/sql/sql_type_fixedbin.h", line=1204, function=<optimized out>) at assert.c:92
|
#3 0x000014cfd3b55006 in __GI___assert_fail (assertion=assertion@entry=0x564b35315c79 "!is_null()", file=file@entry=0x564b35880558 "/test/10.9_dbg/sql/sql_type_fixedbin.h", line=line@entry=1204, function=function@entry=0x564b35881360 "FixedBinTypeBundle<FbtImpl>::Fbt FixedBinTypeBundle<FbtImpl>::Field_fbt::to_fbt() const [with FbtImpl = Inet6]") at assert.c:101
|
#4 0x0000564b35268a8b in FixedBinTypeBundle<Inet6>::Field_fbt::to_fbt (this=0x14cf7006d850) at /test/10.9_dbg/sql/field.h:1375
|
#5 FixedBinTypeBundle<Inet6>::Field_fbt::val_str (this=0x14cf7006d850, val_buffer=0x14cfc80e0f40) at /test/10.9_dbg/sql/sql_type_fixedbin.h:1210
|
#6 0x0000564b34a4e24d in Field::val_str (str=0x14cfc80e0f40, this=<optimized out>) at /test/10.9_dbg/sql/field.h:1030
|
#7 Item_func_group_concat::add (this=this@entry=0x14cf700145f0, exclude_nulls=false) at /test/10.9_dbg/sql/item_sum.cc:4174
|
#8 0x0000564b3480064e in Item_func_group_concat::add (this=0x14cf700145f0) at /test/10.9_dbg/sql/item_sum.h:2043
|
#9 0x0000564b34a4f1dd in Aggregator_simple::add (this=<optimized out>) at /test/10.9_dbg/sql/item_sum.h:720
|
#10 0x0000564b3464c7e5 in Item_sum::aggregator_add (this=0x14cf700145f0) at /test/10.9_dbg/sql/item_sum.h:564
|
#11 Item_sum::reset_and_add (this=0x14cf700145f0) at /test/10.9_dbg/sql/item_sum.h:445
|
#12 init_sum_functions (func_ptr=0x14cf70016230, end_ptr=0x14cf70016238) at /test/10.9_dbg/sql/sql_select.cc:26254
|
#13 0x0000564b3468b5e2 in end_send_group (join=0x14cf70015b18, join_tab=<optimized out>, end_of_records=<optimized out>) at /test/10.9_dbg/sql/sql_select.cc:22551
|
#14 0x0000564b34651d3a in evaluate_join_record (join=join@entry=0x14cf70015b18, join_tab=join_tab@entry=0x14cf70016e70, error=error@entry=0) at /test/10.9_dbg/sql/sql_select.cc:21325
|
#15 0x0000564b34668169 in sub_select (join=0x14cf70015b18, join_tab=0x14cf70016e70, end_of_records=<optimized out>) at /test/10.9_dbg/sql/sql_select.cc:21095
|
#16 0x0000564b3469ff98 in do_select (procedure=0x0, join=0x14cf70015b18) at /test/10.9_dbg/sql/sql_select.cc:20640
|
#17 JOIN::exec_inner (this=this@entry=0x14cf70015b18) at /test/10.9_dbg/sql/sql_select.cc:4749
|
#18 0x0000564b346a0544 in JOIN::exec (this=this@entry=0x14cf70015b18) at /test/10.9_dbg/sql/sql_select.cc:4527
|
#19 0x0000564b3469e553 in mysql_select (thd=thd@entry=0x14cf70000db8, tables=0x14cf70014b38, fields=@0x14cf70014138: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14cf70014a88, last = 0x14cf70014a88, elements = 1}, <No data fields>}, conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x14cf70015af0, unit=0x14cf700051c8, select_lex=0x14cf70013e98) at /test/10.9_dbg/sql/sql_select.cc:5007
|
#20 0x0000564b3469e808 in handle_select (thd=thd@entry=0x14cf70000db8, lex=lex@entry=0x14cf700050f0, result=result@entry=0x14cf70015af0, setup_tables_done_option=setup_tables_done_option@entry=0) at /test/10.9_dbg/sql/sql_select.cc:543
|
#21 0x0000564b345fdb96 in execute_sqlcom_select (thd=thd@entry=0x14cf70000db8, all_tables=0x14cf70014b38) at /test/10.9_dbg/sql/sql_parse.cc:6268
|
#22 0x0000564b3460ab7e in mysql_execute_command (thd=thd@entry=0x14cf70000db8, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/10.9_dbg/sql/sql_parse.cc:3959
|
#23 0x0000564b345f6e23 in mysql_parse (thd=thd@entry=0x14cf70000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14cfc80e2400) at /test/10.9_dbg/sql/sql_parse.cc:8043
|
#24 0x0000564b34605a23 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14cf70000db8, packet=packet@entry=0x14cf7000b889 "", packet_length=packet_length@entry=45, blocking=blocking@entry=true) at /test/10.9_dbg/sql/sql_class.h:1362
|
#25 0x0000564b34608e74 in do_command (thd=0x14cf70000db8, blocking=blocking@entry=true) at /test/10.9_dbg/sql/sql_parse.cc:1407
|
#26 0x0000564b34785d2a in do_handle_one_connection (connect=<optimized out>, connect@entry=0x564b38b4f158, put_in_cache=put_in_cache@entry=true) at /test/10.9_dbg/sql/sql_connect.cc:1418
|
#27 0x0000564b3478632f in handle_one_connection (arg=arg@entry=0x564b38b4f158) at /test/10.9_dbg/sql/sql_connect.cc:1312
|
#28 0x0000564b34c107a5 in pfs_spawn_thread (arg=0x564b38a8f0f8) at /test/10.9_dbg/storage/perfschema/pfs.cc:2201
|
#29 0x000014cfd4054609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#30 0x000014cfd3c40163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
Bug confirmed present in:
MariaDB: 10.7.4 (dbg), 10.8.3 (dbg), 10.9.0 (dbg)
Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.2.44 (dbg), 10.2.44 (opt), 10.3.35 (dbg), 10.3.35 (opt), 10.4.25 (dbg), 10.4.25 (opt), 10.5.16 (dbg), 10.5.16 (opt), 10.6.8 (dbg), 10.6.8 (opt), 10.7.4 (opt), 10.8.3 (opt), 10.9.0 (opt)
MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.37 (dbg), 5.7.37 (opt), 8.0.28 (dbg), 8.0.28 (opt)
|
|
UniqueID for the original first testcase + the testcase by bar
!is_null()|SIGABRT|FixedBinTypeBundle<Inet6>::Field_fbt::to_fbt|FixedBinTypeBundle<Inet6>::Field_fbt::val_str|Field::val_str|Field::val_str
|
UniqueID for the original second testcase
!is_null()|SIGABRT|FixedBinTypeBundle<UUID>::Field_fbt::to_fbt|FixedBinTypeBundle<UUID>::Field_fbt::val_str|Field::val_str|Field::val_str
|
UniqueID for testcase in comment before this one
!is_null()|SIGABRT|FixedBinTypeBundle<Inet6>::Field_fbt::to_fbt|FixedBinTypeBundle<Inet6>::Field_fbt::val_str|Field::val_str|Item_func_group_concat::add
|
|
|
This patch seems to fix the problem:
--- a/sql/item_sum.cc
|
+++ b/sql/item_sum.cc
|
@@ -3844,6 +3844,7 @@ int dump_leaf_key(void* key_arg, element_count count __attribute__((unused)),
|
uint offset= (field->offset(field->table->record[0]) -
|
table->s->null_bytes);
|
DBUG_ASSERT(offset < table->s->reclength);
|
+ field->set_notnull();
|
res= item->get_str_from_field(*arg, field, &tmp, key,
|
offset + item->get_null_bytes());
|
}
|
field->is_null() seems to have an arbitrary value at this point.
This change sets it to NOT NULL, as Item_func_group_concat::add() adds only NOT NULL values.
|
|
bar, could you please fix it, I'm getting it now on bb-10.10-bar-MDEV-23287-inet4
10.10/sql/sql_type_fixedbin.h:1204: FixedBinTypeBundle<FbtImpl>::Fbt FixedBinTypeBundle<FbtImpl>::Field_fbt::to_fbt() const [with FbtImpl = Inet4]: Assertion `!is_null()' failed.
|
|
sql/sql_type_fixedbin.h:1205(FixedBinTypeBundle<Inet4>::Field_fbt::to_fbt() const)[0x558576c3a82e]
|
sql/sql_type_fixedbin.h:1210(FixedBinTypeBundle<Inet4>::Field_fbt::val_str(String*, String*))[0x558576c30e40]
|
sql/field.h:1044(Field::val_str(String*))[0x558574a7aa18]
|
sql/field.h:1605(Field::val_str(String*, unsigned char const*))[0x558575373126]
|
sql/item_jsonfunc.cc:1642(append_json_value_from_field(String*, Item*, Field*, unsigned char const*, unsigned long, String*))[0x558575358ea6]
|
sql/item_jsonfunc.cc:3903(Item_func_json_arrayagg::get_str_from_field(Item*, Field*, String*, unsigned char const*, unsigned long))[0x55857536d068]
|
sql/item_sum.cc:3856(dump_leaf_key)[0x558575918f08]
|
sql/item_sum.cc:4231(Item_func_group_concat::add(bool))[0x55857591d35d]
|
sql/item_sum.h:2044(Item_func_group_concat::add())[0x55857537381b]
|
sql/item_sum.h:720(Aggregator_simple::add())[0x558575922174]
|
sql/item_sum.h:564(Item_sum::aggregator_add())[0x558574a7cf18]
|
sql/item_sum.h:446(Item_sum::reset_and_add())[0x558574a7cd72]
|
sql/sql_select.cc:26444(init_sum_functions(Item_sum**, Item_sum**))[0x558574f353d5]
|
sql/sql_select.cc:22734(end_send_group(JOIN*, st_join_table*, bool))[0x558574f1a4ec]
|
sql/sql_select.cc:21508(evaluate_join_record(JOIN*, st_join_table*, int))[0x558574f1053f]
|
sql/sql_select.cc:21278(sub_select(JOIN*, st_join_table*, bool))[0x558574f0ee3d]
|
sql/sql_select.cc:20823(do_select(JOIN*, Procedure*))[0x558574f0cee6]
|
sql/sql_select.cc:4787(JOIN::exec_inner())[0x558574e9a47c]
|
sql/sql_select.cc:4566(JOIN::exec())[0x558574e979be]
|
sql/sql_select.cc:5047(mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x558574e9bdb3]
|
sql/sql_select.cc:579(handle_select(THD*, LEX*, select_result*, unsigned long))[0x558574e6c70d]
|
sql/sql_parse.cc:4708(mysql_execute_command(THD*, bool))[0x558574d8ac2d]
|
sql/sql_prepare.cc:5221(Prepared_statement::execute(String*, bool))[0x558574e3294b]
|
sql/sql_prepare.cc:4644(Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*))[0x558574e2dc09]
|
sql/sql_prepare.cc:5373(Prepared_statement::execute_immediate(char const*, unsigned int))[0x558574e33b28]
|
sql/sql_prepare.cc:3098(mysql_sql_stmt_execute_immediate(THD*))[0x558574e24278]
|
sql/sql_parse.cc:3951(mysql_execute_command(THD*, bool))[0x558574d855c6]
|
sql/sql_parse.cc:8036(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x558574da19f5]
|
sql/sql_parse.cc:1896(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x558574d780a1]
|
sql/sql_parse.cc:1407(do_command(THD*, bool))[0x558574d74dd7]
|
sql/sql_connect.cc:1418(do_handle_one_connection(CONNECT*, bool))[0x55857521191f]
|
sql/sql_connect.cc:1314(handle_one_connection)[0x5585752111a4]
|
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x558575eac159]
|
nptl/pthread_create.c:487(start_thread)[0x7faf73190fa3]
|
x86_64/clone.S:97(clone)[0x7faf72d99eff]
|
|
|
Also repeatable with a1 being INT instead of TIME.
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (i6 INET6, a1 INT, a2 VARCHAR(10));
|
INSERT INTO t1 VALUES ('::',1,'uw'), ('70:ef59::46:c7b:f:678:bd9f',0,'a');
|
SELECT GROUP_CONCAT(IF(a1, i6, a2) ORDER BY 1) FROM t1;
|
|
|
Also repeatable with this script:
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (i6 INET6, a2 VARCHAR(10));
|
INSERT INTO t1 VALUES ('::',''), (NULL,NULL);
|
SELECT GROUP_CONCAT(COALESCE(i6, a2) ORDER BY 1) FROM t1;
|
|
|
Also repeatable with GROUP_CONCAT(DISTINCT..) instread of GROUP_CONCAT(..ORDER BY..)
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (i6 INET6, a2 VARCHAR(10));
|
INSERT INTO t1 VALUES ('::',''), (NULL,NULL);
|
SELECT GROUP_CONCAT(DISTINCT COALESCE(i6, a2)) FROM t1;
|
|
|
A similar creash is repeatable with this script:
DROP TABLE IF EXISTS t1, t2;
|
DROP VIEW IF EXISTS v1;
|
|
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a INET6(6) DEFAULT '::10');
|
INSERT INTO t1(id) VALUES (1), (2), (3), (4);
|
INSERT INTO t1 VALUES (5,'::5'), (6,'::6');
|
SELECT * FROM t1;
|
|
CREATE VIEW v1(a, m) AS SELECT a, MIN(id) FROM t1 GROUP BY a;
|
SELECT * FROM v1;
|
|
CREATE TABLE t2 SELECT * FROM v1;
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#1 0x00007ffff760a8d9 in __GI_abort () at abort.c:79
|
#2 0x00007ffff760a7a9 in __assert_fail_base (fmt=0x7ffff7775af8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
|
assertion=0x1bbd6fa "!is_null()",
|
file=0x1bbce10 "/home/bar/maria-git/server.10.7.enum/sql/sql_type_fixedbin.h", line=1204,
|
function=<optimized out>) at assert.c:92
|
#3 0x00007ffff7619a66 in __GI___assert_fail (assertion=0x1bbd6fa "!is_null()",
|
file=0x1bbce10 "/home/bar/maria-git/server.10.7.enum/sql/sql_type_fixedbin.h", line=1204,
|
function=0x1bbe510 "FixedBinTypeBundle<FbtImpl>::Fbt FixedBinTypeBundle<FbtImpl>::Field_fbt::to_fbt() const [with FbtImpl = Inet6]") at assert.c:101
|
#4 0x000000000157ee1c in FixedBinTypeBundle<Inet6>::Field_fbt::to_fbt (this=0x7fffb0082fe0)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_type_fixedbin.h:1204
|
#5 0x000000000157d540 in FixedBinTypeBundle<Inet6>::Field_fbt::val_str (this=0x7fffb0082fe0,
|
val_buffer=0x7fffe0d06830) at /home/bar/maria-git/server.10.7.enum/sql/sql_type_fixedbin.h:1210
|
#6 0x00000000007c11d1 in Field::val_str (this=0x7fffb0082fe0, str=0x7fffe0d06830)
|
at /home/bar/maria-git/server.10.7.enum/sql/field.h:1044
|
#7 0x0000000000b51aab in Field::val_str (this=0x7fffb0082fe0, str=0x7fffe0d06830, new_ptr=0x7fffb00831b9 "")
|
at /home/bar/maria-git/server.10.7.enum/sql/field.h:1595
|
#8 0x0000000000c7d8bb in Column_definition::Column_definition (this=0x7fffb0081350, thd=0x7fffb0000db8,
|
old_field=0x7fffb0081288, orig_field=0x7fffb0082fe0) at /home/bar/maria-git/server.10.7.enum/sql/field.cc:10897
|
#9 0x00000000008c21dc in Create_field::Create_field (this=0x7fffb0081350, thd=0x7fffb0000db8,
|
old_field=0x7fffb0081288, orig_field=0x7fffb0082fe0) at /home/bar/maria-git/server.10.7.enum/sql/field.h:5694
|
#10 0x00000000008be8f3 in select_create::create_table_from_items (this=0x7fffb007fbd8, thd=0x7fffb0000db8,
|
items=0x7fffe0d076c0, lock=0x7fffe0d076b8, hooks=0x7fffe0d07670)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_insert.cc:4525
|
#11 0x00000000008bf401 in select_create::prepare (this=0x7fffb007fbd8, _values=..., u=0x7fffb00051c0)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_insert.cc:4772
|
#12 0x00000000009674f2 in JOIN::prepare (this=0x7fffb007fd20, tables_init=0x7fffb0017950, conds_init=0x0,
|
og_num=0, order_init=0x0, skip_order_by=false, group_init=0x0, having_init=0x0, proc_param_init=0x0,
|
select_lex_arg=0x7fffb0017378, unit_arg=0x7fffb00051c0)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_select.cc:1695
|
#13 0x00000000009732f9 in mysql_select (thd=0x7fffb0000db8, tables=0x7fffb0017950, fields=..., conds=0x0,
|
og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2201171004160,
|
result=0x7fffb007fbd8, unit=0x7fffb00051c0, select_lex=0x7fffb0017378)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_select.cc:4995
|
#14 0x0000000000962aad in handle_select (thd=0x7fffb0000db8, lex=0x7fffb00050e8, result=0x7fffb007fbd8,
|
setup_tables_done_option=0) at /home/bar/maria-git/server.10.7.enum/sql/sql_select.cc:554
|
#15 0x0000000000a267bb in Sql_cmd_create_table_like::execute (this=0x7fffb0016c30, thd=0x7fffb0000db8)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_table.cc:11905
|
#16 0x000000000090d3a1 in mysql_execute_command (thd=0x7fffb0000db8, is_called_from_prepared_stmt=false)
|
at /home/bar/maria-git/server.10.7.enum/sql/sql_parse.cc:5988
|
|