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

[MDEV-17897] Assertion `page_is_leaf(block->frame)' failed in lock_rec_validate_page Created: 2018-12-04  Updated: 2018-12-06

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: 0
Labels: None
Environment:

bb-10.4-MDEV-17520 59bdf6994



 Description   

Note: The test is the same as in MDEV-17843, but the assertion is a bit different on the current MDEV-17520 branch than it is on the current 10.4 branch.

bb-10.4-MDEV-17520 59bdf6994

mysqld: /data/src/bb-10.4-MDEV-17520/storage/innobase/lock/lock0lock.cc:5083: ulint lock_rec_validate_page(const buf_block_t*): Assertion `page_is_leaf(block->frame)' failed.
181204 14:21:55 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f96c8d7dee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x0000558f0add41fd in lock_rec_validate_page (block=0x7f96a3a4ee68) at /data/src/bb-10.4-MDEV-17520/storage/innobase/lock/lock0lock.cc:5083
#9  0x0000558f0add492e in lock_rec_block_validate (space_id=9, page_no=3) at /data/src/bb-10.4-MDEV-17520/storage/innobase/lock/lock0lock.cc:5215
#10 0x0000558f0add4cfb in lock_validate () at /data/src/bb-10.4-MDEV-17520/storage/innobase/lock/lock0lock.cc:5289
#11 0x0000558f0add2c88 in lock_print_info_all_transactions (file=0x558f0c9786c0) at /data/src/bb-10.4-MDEV-17520/storage/innobase/lock/lock0lock.cc:4786
#12 0x0000558f0af07241 in srv_printf_innodb_monitor (file=0x558f0c9786c0, nowait=0, trx_start_pos=0x7f96c818dbe0, trx_end=0x7f96c818dbe8) at /data/src/bb-10.4-MDEV-17520/storage/innobase/srv/srv0srv.cc:1258
#13 0x0000558f0ad4e249 in innodb_show_status (hton=0x558f0c9319c0, thd=0x7f965c000b00, stat_print=0x558f0aa1d369 <stat_print(THD*, char const*, size_t, char const*, size_t, char const*, size_t)>) at /data/src/bb-10.4-MDEV-17520/storage/innobase/handler/ha_innodb.cc:15669
#14 0x0000558f0ad4ecb6 in innobase_show_status (hton=0x558f0c9319c0, thd=0x7f965c000b00, stat_print=0x558f0aa1d369 <stat_print(THD*, char const*, size_t, char const*, size_t, char const*, size_t)>, stat_type=HA_ENGINE_STATUS) at /data/src/bb-10.4-MDEV-17520/storage/innobase/handler/ha_innodb.cc:16087
#15 0x0000558f0aa1d703 in ha_show_status (thd=0x7f965c000b00, db_type=0x558f0c9319c0, stat=HA_ENGINE_STATUS) at /data/src/bb-10.4-MDEV-17520/sql/handler.cc:5897
#16 0x0000558f0a705068 in mysql_execute_command (thd=0x7f965c000b00) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:4013
#17 0x0000558f0a711dee in mysql_parse (thd=0x7f965c000b00, rawbuf=0x7f965c015b58 "SHOW ENGINE INNODB STATUS /* QNO 85 CON_ID 12 */", length=48, parser_state=0x7f96c818e650, is_com_multi=false, is_next_command=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:8092
#18 0x0000558f0a6ff0dc in dispatch_command (command=COM_QUERY, thd=0x7f965c000b00, packet=0x7f965c421311 "", packet_length=49, is_com_multi=false, is_next_command=false) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:1851
#19 0x0000558f0a6fdb00 in do_command (thd=0x7f965c000b00) at /data/src/bb-10.4-MDEV-17520/sql/sql_parse.cc:1396
#20 0x0000558f0a8691ce in do_handle_one_connection (connect=0x558f0d44c530) at /data/src/bb-10.4-MDEV-17520/sql/sql_connect.cc:1402
#21 0x0000558f0a868f52 in handle_one_connection (arg=0x558f0d44c530) at /data/src/bb-10.4-MDEV-17520/sql/sql_connect.cc:1308
#22 0x00007f96ca839494 in start_thread (arg=0x7f96c818f700) at pthread_create.c:333
#23 0x00007f96c8e3a93f in clone () from /lib/x86_64-linux-gnu/libc.so.6

The grammar and test are the same as in MDEV-14409:

RQG grammar mdev14409.yy

thread2_init:
  CREATE TABLE `t1` (
    `t1` TEXT,
    `v1` VARCHAR(1),
    `t2` TEXT,
    `v2` VARCHAR(1),
    UNIQUE (`v2`),
    UNIQUE (`t2`(255))
  ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC
  ; CREATE TABLE `t2` LIKE `t1`
  ; CREATE TABLE `t3` LIKE `t1`
  ; CREATE TABLE `t4` LIKE `t1`
  ; INSERT IGNORE INTO `t1` VALUES vals,vals,vals,vals,vals,vals,vals,vals,vals,vals 
  ; INSERT IGNORE INTO `t2` VALUES vals,vals,vals,vals,vals,vals,vals,vals,vals,vals 
  ; INSERT IGNORE INTO `t3` VALUES vals,vals,vals,vals,vals,vals,vals,vals,vals,vals 
  ; INSERT IGNORE INTO `t4` VALUES vals,vals,vals,vals,vals,vals,vals,vals,vals,vals 
  ; SELECT * FROM `t1` INTO OUTFILE 'load.data.t1'
  ; SELECT * FROM `t2` INTO OUTFILE 'load.data.t2'
  ; SELECT * FROM `t3` INTO OUTFILE 'load.data.t3'
  ; SELECT * FROM `t4` INTO OUTFILE 'load.data.t4'
;
 
vals:
  (_char(1024),_char(1),_char(1024),_char(1));
 
thread1:
  SHOW ENGINE INNODB STATUS;
 
query:
  DELETE FROM my_table LIMIT _digit |
  LOAD DATA INFILE { "'load.data.t".$prng->int(1,4)."'" } REPLACE INTO TABLE my_table
;
 
my_table:
  t1 | t2 | t3 | t4 ;

Run as

perl ./runall-new.pl  --basedir=/data/bld/10.2 --vardir=/dev/shm/vardir --duration=300 --threads=2 --grammar=mdev14409.yy --skip-gendata

Don't forget to use your basedir and check whether the vardir path is okay for you.

Note: If something does not work with your version of RQG, try https://github.com/MariaDB/randgen branch elenst-mdev14409.



 Comments   
Comment by Elena Stepanova [ 2018-12-06 ]

Reproducible on bb-10.4-MDEV-17520 b6639a3cffa0

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