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

[MDEV-17924] Failing assertion: page_is_comp(next_page) == page_is_comp(page) in btr0pcur.cc Created: 2018-12-07  Updated: 2018-12-07

Status: Open
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: Unresolved Votes: 1
Labels: None

Issue Links:
Relates
relates to MDEV-6160 InnoDB: Failing assertion: page_is_co... Closed

 Description   

Note: sorry for the raw test case, I don't want to spend time polishing it. Most of those tables must be redundant, they just help to generate the eventual data which can of course be done without intermediaries.

--source include/have_innodb.inc
 
CREATE TABLE t1 (bcol9 BIT NOT NULL) WITH SYSTEM VERSIONING ENGINE=InnoDB;
 
CREATE TABLE t2 (icol5 MEDIUMINT DEFAULT NULL) ENGINE=InnoDB;
CREATE TABLE t3 (geocol5 MULTILINESTRING NOT NULL) ENGINE=InnoDB;
CREATE TABLE t4 (icol1 INT UNSIGNED) ENGINE=InnoDB;
REPLACE INTO t2 () VALUES (),(),(),();
SELECT * FROM t2 INTO OUTFILE 'load_t2';
LOAD DATA INFILE 'load_t2' REPLACE INTO TABLE t2;
INSERT INTO t2 () VALUES (),();
INSERT INTO t4 () VALUES (),(),();
 
SET sql_mode= '';
 
REPLACE INTO t1 () VALUES (),(),(),();
LOAD DATA INFILE 'load_t2' REPLACE INTO TABLE t1;
INSERT INTO t1 () VALUES (),();
INSERT INTO t1 SELECT * FROM t2;
 
INSERT IGNORE INTO t4 () VALUES (),(),(),();
INSERT IGNORE INTO t2 () VALUES (),(),(),();
SELECT * FROM t4 INTO OUTFILE 'load_t4';
LOAD DATA INFILE 'load_t4' REPLACE INTO TABLE t4;
LOAD DATA INFILE 'load_t4' REPLACE INTO TABLE t4;
LOAD DATA INFILE 'load_t4' REPLACE INTO TABLE t4;
 
INSERT IGNORE INTO t1 () VALUES (),(),(),();
INSERT INTO t4 SELECT * FROM t4;
 
INSERT INTO t1 SELECT * FROM t1;
SELECT * FROM t1 INTO OUTFILE 'load_t1';
INSERT IGNORE INTO t1 SELECT * FROM t1;
 
INSERT INTO t3 SELECT * FROM t2;
SELECT * FROM t3 INTO OUTFILE 'load_t3';
LOAD DATA INFILE 'load_t3' IGNORE INTO TABLE t3;
LOAD DATA INFILE 'load_t1' IGNORE INTO TABLE t1;
INSERT INTO t1 SELECT * FROM t1;
 
CREATE OR REPLACE TABLE t5 (tcol8 TIME) ENGINE=InnoDB;
INSERT INTO t3 SELECT * FROM t4;
INSERT IGNORE INTO t5 () VALUES (),(),(),();
SELECT * FROM t5 INTO OUTFILE 'load_t5';
LOAD DATA INFILE 'load_t5' IGNORE INTO TABLE t5;
INSERT IGNORE INTO t1 () VALUES (),(),(),();
INSERT INTO t5 SELECT * FROM t3;
INSERT INTO t1 SELECT * FROM t3;
INSERT INTO t1 SELECT * FROM t5;
SET STATEMENT system_versioning_alter_history= KEEP FOR ALTER TABLE t1 MODIFY COLUMN bcol9 BIT, ALGORITHM=DEFAULT;
REPLACE INTO t1 () VALUES ();
 
SELECT * FROM t1;

bb-10.4-MDEV-17520 b6639a3cf

2018-12-07 10:41:28 0x7f0b7e52e700  InnoDB: Assertion failure in file /data/src/bb-10.4-MDEV-17520-2/storage/innobase/btr/btr0pcur.cc line 489
InnoDB: Failing assertion: page_is_comp(next_page) == page_is_comp(page)
InnoDB: We intentionally generate a memory trap.
 
#5  0x00007fa8c91783fa in abort () from /lib/x86_64-linux-gnu/libc.so.6
#6  0x0000563211dc1af9 in ut_dbg_assertion_failed (expr=0x5632124097b0 "page_is_comp(next_page) == page_is_comp(page)", file=0x563212409330 "/data/src/bb-10.4-MDEV-17520/storage/innobase/btr/btr0pcur.cc", line=489) at /data/src/bb-10.4-MDEV-17520/storage/innobase/ut/ut0dbg.cc:60
#7  0x0000563211e0bcd9 in btr_pcur_move_to_next_page (cursor=0x7fa85806a208, mtr=0x7fa8b197ee50) at /data/src/bb-10.4-MDEV-17520/storage/innobase/btr/btr0pcur.cc:489
#8  0x0000563211d339c8 in btr_pcur_move_to_next (cursor=0x7fa85806a208, mtr=0x7fa8b197ee50) at /data/src/bb-10.4-MDEV-17520/storage/innobase/include/btr0pcur.ic:339
#9  0x0000563211d418e7 in row_search_mvcc (buf=0x7fa85805d040 <incomplete sequence \375>, mode=PAGE_CUR_G, prebuilt=0x7fa85806a048, match_mode=0, direction=1) at /data/src/bb-10.4-MDEV-17520/storage/innobase/row/row0sel.cc:5588
#10 0x0000563211b9dea7 in ha_innobase::general_fetch (this=0x7fa85805d498, buf=0x7fa85805d040 <incomplete sequence \375>, direction=1, match_mode=0) at /data/src/bb-10.4-MDEV-17520/storage/innobase/handler/ha_innodb.cc:9541
#11 0x0000563211b9e428 in ha_innobase::rnd_next (this=0x7fa85805d498, buf=0x7fa85805d040 <incomplete sequence \375>) at /data/src/bb-10.4-MDEV-17520/storage/innobase/handler/ha_innodb.cc:9750
#12 0x0000563211871085 in handler::ha_rnd_next (this=0x7fa85805d498, buf=0x7fa85805d040 <incomplete sequence \375>) at /data/src/bb-10.4-MDEV-17520/sql/handler.cc:2765
#13 0x00005632119f6c93 in rr_sequential (info=0x7fa858016fb0) at /data/src/bb-10.4-MDEV-17520/sql/records.cc:481
#14 0x00005632114c19e1 in READ_RECORD::read_record (this=0x7fa858016fb0) at /data/src/bb-10.4-MDEV-17520/sql/records.h:73
#15 0x00005632115d5cfe in sub_select (join=0x7fa858014dc8, join_tab=0x7fa858016ee8, end_of_records=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_select.cc:19409
#16 0x00005632115d518b in do_select (join=0x7fa858014dc8, procedure=0x0) at /data/src/bb-10.4-MDEV-17520/sql/sql_select.cc:18930
#17 0x00005632115adbdf in JOIN::exec_inner (this=0x7fa858014dc8) at /data/src/bb-10.4-MDEV-17520/sql/sql_select.cc:4094
#18 0x00005632115ad020 in JOIN::exec (this=0x7fa858014dc8) at /data/src/bb-10.4-MDEV-17520/sql/sql_select.cc:3888
#19 0x00005632115ae2df in mysql_select (thd=0x7fa858000b00, tables=0x7fa858013f08, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fa858014da0, unit=0x7fa8580049b0, select_lex=0x7fa858013980) at /data/src/bb-10.4-MDEV-17520/sql/sql_select.cc:4293
#20 0x000056321159fbeb in handle_select (thd=0x7fa858000b00, lex=0x7fa8580048e8, result=0x7fa858014da0, setup_tables_done_option=0) at /data/src/bb-10.4-MDEV-17520/sql/sql_select.cc:385
#21 0x0000563211569f62 in execute_sqlcom_select (thd=0x7fa858000b00, all_tables=0x7fa858013f08) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:6555
#22 0x00005632115605d2 in mysql_execute_command (thd=0x7fa858000b00) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:3774
#23 0x000056321156dd6e in mysql_parse (thd=0x7fa858000b00, rawbuf=0x7fa8580138f8 "SELECT * FROM t1", length=16, parser_state=0x7fa8b1980650, is_com_multi=false, is_next_command=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:8092
#24 0x000056321155b05c in dispatch_command (command=COM_QUERY, thd=0x7fa858000b00, packet=0x7fa85801bb21 "", packet_length=16, is_com_multi=false, is_next_command=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:1851
#25 0x0000563211559a80 in do_command (thd=0x7fa858000b00) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:1396
#26 0x00005632116c5168 in do_handle_one_connection (connect=0x56321531f7d0) at /data/src/bb-10.4-MDEV-17520/sql/sql_connect.cc:1402
#27 0x00005632116c4eec in handle_one_connection (arg=0x56321531f7d0) at /data/src/bb-10.4-MDEV-17520/sql/sql_connect.cc:1308
#28 0x00007fa8cac2b494 in start_thread (arg=0x7fa8b1981700) at pthread_create.c:333
#29 0x00007fa8c922c93f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Not reproducible on current 10.4 branch bb9b4182e4.


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