[MDEV-28105] Spider: @@insert_id 128 to TINYINT: Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed. Created: 2022-03-16  Updated: 2023-05-23

Status: Confirmed
Project: MariaDB Server
Component/s: Data Manipulation - Insert, Storage Engine - Spider
Affects Version/s: 10.4, 10.5, 10.6, 10.7, 10.8, 10.9
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Major
Reporter: Roel Van de Paar Assignee: Yuchen Pei
Resolution: Unresolved Votes: 0
Labels: affects-tests, auto_increment

Issue Links:
Relates

 Description   

INSTALL PLUGIN spider SONAME 'ha_spider.so';
SET @@insert_id=128;  # 127 does not crash
CREATE TABLE t(c TINYINT AUTO_INCREMENT KEY) ENGINE=Spider;
INSERT IGNORE INTO t VALUES(0);

Leads to:

10.9.0 5be92887c2caacb45af87b1131db952ce627e83a (Debug)

mysqld: /test/10.9_dbg/sql/sql_error.cc:335: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.

10.9.0 5be92887c2caacb45af87b1131db952ce627e83a (Debug)

Core was generated by `/test/MD160322-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 0x14f95419e700 (LWP 770235))]
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x000014f974617859 in __GI_abort () at abort.c:79
#2  0x000014f974617729 in __assert_fail_base (fmt=0x14f9747ad588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55d8ea360e38 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=0x55d8ea360d18 "/test/10.9_dbg/sql/sql_error.cc", line=335, function=<optimized out>) at assert.c:92
#3  0x000014f974629006 in __GI___assert_fail (assertion=assertion@entry=0x55d8ea360e38 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=file@entry=0x55d8ea360d18 "/test/10.9_dbg/sql/sql_error.cc", line=line@entry=335, function=function@entry=0x55d8ea360e70 "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
#4  0x000055d8e9637cdd in Diagnostics_area::set_ok_status (this=0x14f90c006d20, affected_rows=0, last_insert_id=last_insert_id@entry=0, message=message@entry=0x0) at /test/10.9_dbg/sql/sql_error.h:1031
#5  0x000055d8e964dee2 in my_ok (message=0x0, id=0, affected_rows_arg=<optimized out>, thd=0x14f90c000db8) at /test/10.9_dbg/sql/sql_class.h:5531
#6  mysql_insert (thd=thd@entry=0x14f90c000db8, table_list=0x14f90c013ec0, fields=@0x14f90c006080: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x55d8eace49a0 <end_of_list>, last = 0x14f90c006080, elements = 0}, <No data fields>}, values_list=@0x14f90c0060c8: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x14f90c014ac8, last = 0x14f90c014ac8, elements = 1}, <No data fields>}, update_fields=@0x14f90c0060b0: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x55d8eace49a0 <end_of_list>, last = 0x14f90c0060b0, elements = 0}, <No data fields>}, update_values=@0x14f90c006098: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x55d8eace49a0 <end_of_list>, last = 0x14f90c006098, elements = 0}, <No data fields>}, duplic=DUP_ERROR, ignore=true, result=0x0) at /test/10.9_dbg/sql/sql_insert.cc:1322
#7  0x000055d8e9693a4c in mysql_execute_command (thd=thd@entry=0x14f90c000db8, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/10.9_dbg/sql/sql_parse.cc:4562
#8  0x000055d8e967e437 in mysql_parse (thd=thd@entry=0x14f90c000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14f95419d400) at /test/10.9_dbg/sql/sql_parse.cc:8027
#9  0x000055d8e968d0d3 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14f90c000db8, packet=packet@entry=0x14f90c00b889 "INSERT IGNORE INTO t VALUES(0)", packet_length=packet_length@entry=30, blocking=blocking@entry=true) at /test/10.9_dbg/sql/sql_class.h:1362
#10 0x000055d8e969051a in do_command (thd=0x14f90c000db8, blocking=blocking@entry=true) at /test/10.9_dbg/sql/sql_parse.cc:1402
#11 0x000055d8e980b228 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55d8ed87bf58, put_in_cache=put_in_cache@entry=true) at /test/10.9_dbg/sql/sql_connect.cc:1418
#12 0x000055d8e980b82d in handle_one_connection (arg=arg@entry=0x55d8ed87bf58) at /test/10.9_dbg/sql/sql_connect.cc:1312
#13 0x000055d8e9c91f23 in pfs_spawn_thread (arg=0x55d8ed7be9d8) at /test/10.9_dbg/storage/perfschema/pfs.cc:2201
#14 0x000014f974b28609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#15 0x000014f974714163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Bug confirmed present in:
MariaDB: 10.4.25 (dbg), 10.5.16 (dbg), 10.6.8 (dbg), 10.7.4 (dbg), 10.8.3 (dbg), 10.9.0 (dbg)

Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.4.25 (opt), 10.5.16 (opt), 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)

May also affect 10.2/10.3



 Comments   
Comment by Roel Van de Paar [ 2022-03-16 ]

This bug affects testing as the assert message is common (i.e. bugs could be masked till this is fixed).

Comment by Nayuta Yanagisawa (Inactive) [ 2022-09-01 ]

The assertion fails because is_set() == TRUE or m_status == Diagnostics_area::DA_ERROR. The value is set in spider_db_connect().

2917bd0d2cf417cbf9c83b64ae2b7806bdb2f34e

Thread 2 hit Hardware watchpoint 1: -location m_status
 
Old value = Diagnostics_area::DA_ERROR
New value = Diagnostics_area::DA_EMPTY
0x00005570448788fa in Diagnostics_area::set_error_status (this=0x7f77d80067c0, sql_errno=1429, message=0x7f77d80c8bfa "Unable to connect to foreign data source: localhost", sqlstate=0x55704577fb2d "HY000", ucid=..., error_condition=0x0) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_error.cc:468
468	  m_status= DA_ERROR;
(rr) bt
#0  0x00005570448788fa in Diagnostics_area::set_error_status (this=0x7f77d80067c0, sql_errno=1429, 
    message=0x7f77d80c8bfa "Unable to connect to foreign data source: localhost", sqlstate=0x55704577fb2d "HY000", ucid=..., error_condition=0x0)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_error.cc:468
#1  0x0000557044850c1e in THD::raise_condition (this=0x7f77d8000da0, sql_errno=1429, sqlstate=0x55704577fb2d "HY000", level=Sql_state_errno_level::WARN_LEVEL_ERROR, 
    ucid=..., msg=0x7f77d80c8bfa "Unable to connect to foreign data source: localhost") at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_class.cc:1090
#2  0x000055704478ba88 in THD::raise_condition (this=0x7f77d8000da0, sql_errno=1429, sqlstate=0x0, level=Sql_state_errno_level::WARN_LEVEL_ERROR, 
    msg=0x7f77d80c8bfa "Unable to connect to foreign data source: localhost") at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_class.h:4434
#3  0x000055704477e010 in my_message_sql (error=1429, str=0x7f77d80c8bfa "Unable to connect to foreign data source: localhost", MyFlags=0)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/mysqld.cc:3383
#4  0x0000557045553190 in my_message (error=1429, str=0x7f77d80c8bfa "Unable to connect to foreign data source: localhost", MyFlags=140152701740992)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/mysys/my_error.c:196
#5  0x00007f77e766081c in spider_db_connect (share=0x7f77d80b8820, conn=0x7f77d80c84f0, link_idx=0)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_conn.cc:114
#6  0x00007f77e7661797 in spider_db_conn_queue_action (conn=0x7f77d80c84f0) at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_conn.cc:293
#7  0x00007f77e7663873 in spider_db_before_query (conn=0x7f77d80c84f0, need_mon=0x7f77d80c5950)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_conn.cc:608
#8  0x00007f77e7665760 in spider_db_set_names_internal (trx=0x7f77d808c750, share=0x7f77d80b8820, conn=0x7f77d80c84f0, all_link_idx=0, need_mon=0x7f77d80c5950)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_conn.cc:910
#9  0x00007f77e7665b3d in spider_db_set_names (spider=0x7f77d80b6ad8, conn=0x7f77d80c84f0, link_idx=0)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_conn.cc:955
#10 0x00007f77e777e422 in spider_mbase_handler::show_table_status (this=0x7f77d80c5ab0, link_idx=0, sts_mode=1, flag=64)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_mysql.cc:14018
#11 0x00007f77e767aa39 in spider_db_show_table_status (spider=0x7f77d80b6ad8, link_idx=0, sts_mode=1, flag=64)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_db_conn.cc:5911
#12 0x00007f77e76d4119 in spider_get_sts (share=0x7f77d80b8820, link_idx=0, tmp_time=1662032458, spider=0x7f77d80b6ad8, sts_interval=0, sts_mode=1, sts_sync=0, 
    sts_sync_level=1, flag=64) at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/spd_table.cc:7747
#13 0x00007f77e7726d38 in ha_spider::info (this=0x7f77d80b6ad8, flag=64) at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/ha_spider.cc:8883
#14 0x00007f77e772c421 in ha_spider::write_row (this=0x7f77d80b6ad8, buf=0x7f77d8037810 "\377")
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/spider/ha_spider.cc:10144
#15 0x0000557044c3a95c in handler::ha_write_row (this=0x7f77d80b6ad8, buf=0x7f77d8037810 "\377") at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/handler.cc:6819
#16 0x0000557044884fcb in write_record (thd=0x7f77d8000da0, table=0x7f77d80b5c50, info=0x7f77ec08f850)
    at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_insert.cc:2082
#17 0x0000557044881c70 in mysql_insert (thd=0x7f77d8000da0, table_list=0x7f77d8014898, fields=..., values_list=..., update_fields=..., update_values=..., 
    duplic=DUP_ERROR, ignore=true) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_insert.cc:1083
#18 0x00005570448d3114 in mysql_execute_command (thd=0x7f77d8000da0) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_parse.cc:4599
#19 0x00005570448deca5 in mysql_parse (thd=0x7f77d8000da0, rawbuf=0x7f77d80147b8 "INSERT IGNORE INTO t VALUES(0)", length=30, parser_state=0x7f77ec0902f0, 
    is_com_multi=false, is_next_command=false) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_parse.cc:7996
#20 0x00005570448ca891 in dispatch_command (command=COM_QUERY, thd=0x7f77d8000da0, packet=0x7f77d800ac11 "INSERT IGNORE INTO t VALUES(0)", packet_length=30, 
    is_com_multi=false, is_next_command=false) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_parse.cc:1857
#21 0x00005570448c90b1 in do_command (thd=0x7f77d8000da0) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_parse.cc:1378
#22 0x0000557044a65631 in do_handle_one_connection (connect=0x557048a99df0) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_connect.cc:1420
#23 0x0000557044a652cd in handle_one_connection (arg=0x557048a99df0) at /home/nayuta_mariadb/repo/mariadb-server/10.4/sql/sql_connect.cc:1316
#24 0x0000557044fbb38b in pfs_spawn_thread (arg=0x5570489eb430) at /home/nayuta_mariadb/repo/mariadb-server/10.4/storage/perfschema/pfs.cc:1869
#25 0x00007f77f2bddb43 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#26 0x00007f77f2c6ebb4 in clone () from /lib/x86_64-linux-gnu/libc.so.6

Generated at Thu Feb 08 09:58:06 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.