[MDEV-18149] InnoDB: Assertion failure in file /home/travis/src/storage/innobase/include/row0row.ic line 211 upon REPLACE after DROP COLUMN Created: 2019-01-06  Updated: 2019-01-17  Resolved: 2019-01-17

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 10.4
Fix Version/s: 10.4.2

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Problem/Incident
is caused by MDEV-18076 InnoDB: Assertion failure in file sto... Closed
is caused by MDEV-18077 Assertion `n < tuple->n_fields' faile... Closed
Relates
relates to MDEV-17901 Assertion failure in file storage/inn... Closed

 Description   

--source include/have_innodb.inc
 
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b INT, KEY(a)) ENGINE=InnoDB;
REPLACE INTO t1 VALUES (1,NULL) ;
ALTER TABLE t1 DROP a;
REPLACE INTO t1 SELECT * FROM t1;
 
# Cleanup
DROP TABLE t1;

10.4 29f77d41f5

2019-01-15 20:41:24 0x7fe5acd44700  InnoDB: Assertion failure in file /data/src/10.4/storage/innobase/include/row0row.ic line 211
InnoDB: We intentionally generate a memory trap.
 
#5  0x00007fe5b3a233fa in abort () from /lib/x86_64-linux-gnu/libc.so.6
#6  0x000055d954bab8e6 in ut_dbg_assertion_failed (expr=0x0, file=0x55d95516c558 "/data/src/10.4/storage/innobase/include/row0row.ic", line=211) at /data/src/10.4/storage/innobase/ut/ut0dbg.cc:60
#7  0x000055d954acbc03 in row_parse_int (data=0x55d955142d00 <field_ref_zero> "", len=4, mtype=3, unsigned_type=false) at /data/src/10.4/storage/innobase/include/row0row.ic:211
#8  0x000055d954ac7fbd in row_ins_clust_index_entry_low (flags=0, mode=2, index=0x7fe55415a128, n_uniq=0, entry=0x7fe554080b18, n_ext=0, thr=0x7fe554073c98, dup_chk_only=false) at /data/src/10.4/storage/innobase/row/row0ins.cc:2619
#9  0x000055d954ac9eba in row_ins_clust_index_entry (index=0x7fe55415a128, entry=0x7fe554080b18, thr=0x7fe554073c98, n_ext=0, dup_chk_only=false) at /data/src/10.4/storage/innobase/row/row0ins.cc:3252
#10 0x000055d954aca382 in row_ins_index_entry (index=0x7fe55415a128, entry=0x7fe554080b18, thr=0x7fe554073c98) at /data/src/10.4/storage/innobase/row/row0ins.cc:3377
#11 0x000055d954acaa57 in row_ins_index_entry_step (node=0x7fe554073a40, thr=0x7fe554073c98) at /data/src/10.4/storage/innobase/row/row0ins.cc:3545
#12 0x000055d954acae8b in row_ins (node=0x7fe554073a40, thr=0x7fe554073c98) at /data/src/10.4/storage/innobase/row/row0ins.cc:3688
#13 0x000055d954acb694 in row_ins_step (thr=0x7fe554073c98) at /data/src/10.4/storage/innobase/row/row0ins.cc:3933
#14 0x000055d954aeb358 in row_insert_for_mysql (mysql_rec=0x7fe55415ab10 "\377", prebuilt=0x7fe554073528, ins_mode=ROW_INS_NORMAL) at /data/src/10.4/storage/innobase/row/row0mysql.cc:1460
#15 0x000055d9549873d0 in ha_innobase::write_row (this=0x7fe554072ce8, record=0x7fe55415ab10 "\377") at /data/src/10.4/storage/innobase/handler/ha_innodb.cc:8049
#16 0x000055d954661992 in handler::ha_write_row (this=0x7fe554072ce8, buf=0x7fe55415ab10 "\377") at /data/src/10.4/sql/handler.cc:6273
#17 0x000055d954300598 in write_record (thd=0x7fe554000b00, table=0x7fe55415aff0, info=0x7fe554016b80) at /data/src/10.4/sql/sql_insert.cc:1696
#18 0x000055d954305970 in select_insert::send_data (this=0x7fe554016b38, values=...) at /data/src/10.4/sql/sql_insert.cc:3874
#19 0x000055d9543b9c98 in end_send (join=0x7fe554016be8, join_tab=0x7fe5540185f0, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20574
#20 0x000055d9543b74a7 in evaluate_join_record (join=0x7fe554016be8, join_tab=0x7fe554018240, error=0) at /data/src/10.4/sql/sql_select.cc:19610
#21 0x000055d9543cc650 in AGGR_OP::end_send (this=0x7fe554018ac8) at /data/src/10.4/sql/sql_select.cc:27453
#22 0x000055d9543b6832 in sub_select_postjoin_aggr (join=0x7fe554016be8, join_tab=0x7fe554018240, end_of_records=true) at /data/src/10.4/sql/sql_select.cc:19106
#23 0x000055d9543b6b5f in sub_select (join=0x7fe554016be8, join_tab=0x7fe554017e90, end_of_records=true) at /data/src/10.4/sql/sql_select.cc:19341
#24 0x000055d9543b6327 in do_select (join=0x7fe554016be8, procedure=0x0) at /data/src/10.4/sql/sql_select.cc:18932
#25 0x000055d95438ed21 in JOIN::exec_inner (this=0x7fe554016be8) at /data/src/10.4/sql/sql_select.cc:4094
#26 0x000055d95438e162 in JOIN::exec (this=0x7fe554016be8) at /data/src/10.4/sql/sql_select.cc:3888
#27 0x000055d95438f421 in mysql_select (thd=0x7fe554000b00, tables=0x7fe554015c70, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3489925888, result=0x7fe554016b38, unit=0x7fe5540049d8, select_lex=0x7fe5540156e8) at /data/src/10.4/sql/sql_select.cc:4293
#28 0x000055d954380d2d in handle_select (thd=0x7fe554000b00, lex=0x7fe554004910, result=0x7fe554016b38, setup_tables_done_option=1073741824) at /data/src/10.4/sql/sql_select.cc:385
#29 0x000055d9543447d7 in mysql_execute_command (thd=0x7fe554000b00) at /data/src/10.4/sql/sql_parse.cc:4838
#30 0x000055d95434ed80 in mysql_parse (thd=0x7fe554000b00, rawbuf=0x7fe554014fb8 "REPLACE INTO t1 SELECT * FROM t1", length=32, parser_state=0x7fe5acd43600, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:8116
#31 0x000055d95433bf1d in dispatch_command (command=COM_QUERY, thd=0x7fe554000b00, packet=0x7fe55400b441 "REPLACE INTO t1 SELECT * FROM t1", packet_length=32, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1852
#32 0x000055d95433a941 in do_command (thd=0x7fe554000b00) at /data/src/10.4/sql/sql_parse.cc:1397
#33 0x000055d9544a6bfc in do_handle_one_connection (connect=0x55d957aba0e0) at /data/src/10.4/sql/sql_connect.cc:1402
#34 0x000055d9544a6980 in handle_one_connection (arg=0x55d957aba0e0) at /data/src/10.4/sql/sql_connect.cc:1308
#35 0x000055d954965f5a in pfs_spawn_thread (arg=0x55d957ab5060) at /data/src/10.4/storage/perfschema/pfs.cc:1862
#36 0x00007fe5b56f1494 in start_thread (arg=0x7fe5acd44700) at pthread_create.c:333
#37 0x00007fe5b3ad793f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Not reproducible on 10.3.



 Comments   
Comment by Marko Mäkelä [ 2019-01-17 ]

Here is a little simpler test case:

CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b INT, KEY(a)) ENGINE=InnoDB;
INSERT INTO t1 SET b=NULL;
ALTER TABLE t1 DROP a;
INSERT INTO t1 SET b=NULL;
DROP TABLE t1;

This looks like a variation of MDEV-17901. I must improve that fix.

Comment by Marko Mäkelä [ 2019-01-17 ]

The MDEV-17901 fix was reverted as part of the MDEV-18076/MDEV-18077 fix, because that fix was redundant in that particular scenario.

In the MDEV-17901 test case, the table was empty at the time of DROP COLUMN, while here it was nonempty.

Generated at Thu Feb 08 08:41:52 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.