Instant ALTER TABLE for failure-free column type changes (MDEV-17520)

[MDEV-17892] Assertion `!(field->type.prtype & 256U) == !index->was_not_null(i)' failed in rec_convert_dtuple_to_rec_comp Created: 2018-12-04  Updated: 2018-12-04  Resolved: 2018-12-04

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

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


 Description   

--source include/have_innodb.inc
 
CREATE TABLE t1 (a CHAR NULL) ENGINE=InnoDB;
ALTER TABLE t1 MODIFY a DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE t1 MODIFY a DATETIME NULL DEFAULT '2000-01-01 00:00:00';
 
INSERT INTO t1 (a) VALUES ( NOW() );
 
# Cleanup
DROP TABLE t1;

bb-10.4-MDEV-17520 5f5fb84a433

mysqld: /data/src/bb-10.4-MDEV-17520/storage/innobase/rem/rem0rec.cc:1639: void rec_convert_dtuple_to_rec_comp(rec_t*, const dict_index_t*, const dfield_t*, ulint, rec_comp_status_t, bool) [with bool mblob = false; rec_t = unsigned char; ulint = long unsigned int]: Assertion `!(field->type.prtype & 256U) == !index->was_not_null(i)' failed.
181204 11:19:15 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f751d85cee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x00005588857bc92d in rec_convert_dtuple_to_rec_comp<false> (rec=0x7f74b012bf8d "", index=0x7f74b004b3b8, field=0x7f74b000f118, n_fields=4, status=REC_STATUS_ORDINARY, temp=false) at /data/src/bb-10.4-MDEV-17520/storage/innobase/rem/rem0rec.cc:1638
#9  0x00005588857b4bca in rec_convert_dtuple_to_rec_new (buf=0x7f74b012bf8d "", index=0x7f74b004b3b8, dtuple=0x7f74b000f088) at /data/src/bb-10.4-MDEV-17520/storage/innobase/rem/rem0rec.cc:1730
#10 0x00005588857b4cdf in rec_convert_dtuple_to_rec (buf=0x7f74b012bf88 "", format=REC_FMT_LEAF, index=0x7f74b004b3b8, dtuple=0x7f74b000f088, n_ext=0) at /data/src/bb-10.4-MDEV-17520/storage/innobase/rem/rem0rec.cc:1756
#11 0x00005588858ec35f in page_cur_tuple_insert (cursor=0x7f7512b9aad8, tuple=0x7f74b000f088, index=0x7f74b004b3b8, offsets=0x7f7512b9aa68, heap=0x7f7512b9aa60, n_ext=0, mtr=0x7f7512b9aef0) at /data/src/bb-10.4-MDEV-17520/storage/innobase/include/page0cur.ic:282
#12 0x00005588858f80dc in btr_cur_optimistic_insert (flags=0, cursor=0x7f7512b9aad0, offsets=0x7f7512b9aa68, heap=0x7f7512b9aa60, entry=0x7f74b000f088, rec=0x7f7512b9aa70, big_rec=0x7f7512b9aa58, n_ext=0, thr=0x7f74b0052228, mtr=0x7f7512b9aef0) at /data/src/bb-10.4-MDEV-17520/storage/innobase/btr/btr0cur.cc:3513
#13 0x00005588857df540 in row_ins_clust_index_entry_low (flags=0, mode=2, index=0x7f74b004b3b8, n_uniq=0, entry=0x7f74b000f088, n_ext=0, thr=0x7f74b0052228, dup_chk_only=false) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0ins.cc:2756
#14 0x00005588857e0d14 in row_ins_clust_index_entry (index=0x7f74b004b3b8, entry=0x7f74b000f088, thr=0x7f74b0052228, n_ext=0, dup_chk_only=false) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0ins.cc:3262
#15 0x00005588857e11ca in row_ins_index_entry (index=0x7f74b004b3b8, entry=0x7f74b000f088, thr=0x7f74b0052228) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0ins.cc:3387
#16 0x00005588857e18a0 in row_ins_index_entry_step (node=0x7f74b0051fd0, thr=0x7f74b0052228) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0ins.cc:3555
#17 0x00005588857e1cd4 in row_ins (node=0x7f74b0051fd0, thr=0x7f74b0052228) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0ins.cc:3698
#18 0x00005588857e24d4 in row_ins_step (thr=0x7f74b0052228) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0ins.cc:3943
#19 0x0000558885801fcf in row_insert_for_mysql (mysql_rec=0x7f74b000ec30 "\375\231\241\210\264\317\245\245\245\245\245\245\245\245\245\245P\354", prebuilt=0x7f74b0051ab8, ins_mode=ROW_INS_NORMAL) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0mysql.cc:1460
#20 0x000055888569b830 in ha_innobase::write_row (this=0x7f74b012e918, record=0x7f74b000ec30 "\375\231\241\210\264\317\245\245\245\245\245\245\245\245\245\245P\354") at /data/src/bb-10.4-MDEV-17520/storage/innobase/handler/ha_innodb.cc:8045
#21 0x000055888537b6cc in handler::ha_write_row (this=0x7f74b012e918, buf=0x7f74b000ec30 "\375\231\241\210\264\317\245\245\245\245\245\245\245\245\245\245P\354") at /data/src/bb-10.4-MDEV-17520/sql/handler.cc:6238
#22 0x0000558885020a9b in write_record (thd=0x7f74b0000b00, table=0x7f74b012dce0, info=0x7f7512b9bb80) at /data/src/bb-10.4-MDEV-17520/sql/sql_insert.cc:2022
#23 0x000055888501de27 in mysql_insert (thd=0x7f74b0000b00, table_list=0x7f74b0014ea0, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_insert.cc:1063
#24 0x000055888506422f in mysql_execute_command (thd=0x7f74b0000b00) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:4732
#25 0x000055888506edee in mysql_parse (thd=0x7f74b0000b00, rawbuf=0x7f74b0014da8 "INSERT INTO t1 (a) VALUES ( NOW() )", length=35, parser_state=0x7f7512b9c600, is_com_multi=false, is_next_command=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:8092
#26 0x000055888505c0dc in dispatch_command (command=COM_QUERY, thd=0x7f74b0000b00, packet=0x7f74b0093df1 "INSERT INTO t1 (a) VALUES ( NOW() )", packet_length=35, is_com_multi=false, is_next_command=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:1851
#27 0x000055888505ab00 in do_command (thd=0x7f74b0000b00) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:1396
#28 0x00005588851c61ce in do_handle_one_connection (connect=0x55888882e840) at /data/src/bb-10.4-MDEV-17520/sql/sql_connect.cc:1402
#29 0x00005588851c5f52 in handle_one_connection (arg=0x55888882e840) at /data/src/bb-10.4-MDEV-17520/sql/sql_connect.cc:1308
#30 0x000055888567a41c in pfs_spawn_thread (arg=0x5588888b3bc0) at /data/src/bb-10.4-MDEV-17520/storage/perfschema/pfs.cc:1862
#31 0x00007f751f318494 in start_thread (arg=0x7f7512b9d700) at pthread_create.c:333
#32 0x00007f751d91993f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Not reproducible on 10.4 branch.



 Comments   
Comment by Marko Mäkelä [ 2018-12-04 ]

I cannot reproduce this with the current bb-10.4-MDEV-17520. I recently made some fixes in this area. I will keep the test uncommitted in my development tree to prevent future regression.

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