[MDEV-18711] Assertion `key_info->key_part->field->flags & (1<< 30)' failed in setup_keyinfo_hash upon rebuilding table with index on blob Created: 2019-02-24  Updated: 2019-02-28  Resolved: 2019-02-28

Status: Closed
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Data types
Affects Version/s: 10.4
Fix Version/s: 10.4.4

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Problem/Incident
is caused by MDEV-371 Unique indexes for blobs Closed

 Description   

Note: The failure became possible after MDEV-371, without it the key without a length in the table definition is rejected.

--source include/have_innodb.inc
 
CREATE TABLE t1 ( 
  pk INT,
  c CHAR(100),
  b BLOB,
  PRIMARY KEY(pk),
  KEY(c(64)),
  KEY(b,c(64))
) ENGINE=InnoDB;
 
ALTER TABLE t1 FORCE;
 
# Cleanup
DROP TABLE t1;

10.4 fb01193c

mysqld: /data/src/10.4/sql/table.cc:8985: void setup_keyinfo_hash(KEY*): Assertion `key_info->key_part->field->flags & (1<< 30)' failed.
190224  3:18:33 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f2110ee4ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000055abed949167 in setup_keyinfo_hash (key_info=0x7f20b8155bc8) at /data/src/10.4/sql/table.cc:8985
#9  0x000055abed8feb95 in mysql_prepare_alter_table (thd=0x7f20b8000b00, table=0x7f20b800c960, create_info=0x7f2106205cd0, alter_info=0x7f2106205c10, alter_ctx=0x7f21062050e0) at /data/src/10.4/sql/sql_table.cc:8302
#10 0x000055abed902802 in mysql_alter_table (thd=0x7f20b8000b00, new_db=0x7f20b8005290, new_name=0x7f20b8005690, create_info=0x7f2106205cd0, table_list=0x7f20b8015580, alter_info=0x7f2106205c10, order_num=0, order=0x0, ignore=false) at /data/src/10.4/sql/sql_table.cc:9606
#11 0x000055abed991922 in Sql_cmd_alter_table::execute (this=0x7f20b8015c30, thd=0x7f20b8000b00) at /data/src/10.4/sql/sql_alter.cc:499
#12 0x000055abed822aca in mysql_execute_command (thd=0x7f20b8000b00) at /data/src/10.4/sql/sql_parse.cc:6346
#13 0x000055abed827c72 in mysql_parse (thd=0x7f20b8000b00, rawbuf=0x7f20b80154a8 "ALTER TABLE t1 FORCE", length=20, parser_state=0x7f2106207180, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:8157
#14 0x000055abed813360 in dispatch_command (command=COM_QUERY, thd=0x7f20b8000b00, packet=0x7f20b81a0091 "ALTER TABLE t1 FORCE", packet_length=20, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1829
#15 0x000055abed811b34 in do_command (thd=0x7f20b8000b00) at /data/src/10.4/sql/sql_parse.cc:1358
#16 0x000055abed98b837 in do_handle_one_connection (connect=0x55abf0dabdd0) at /data/src/10.4/sql/sql_connect.cc:1399
#17 0x000055abed98b5a8 in handle_one_connection (arg=0x55abf0dabdd0) at /data/src/10.4/sql/sql_connect.cc:1302
#18 0x000055abede82979 in pfs_spawn_thread (arg=0x55abf0df1a90) at /data/src/10.4/storage/perfschema/pfs.cc:1862
#19 0x00007f2112bbb494 in start_thread (arg=0x7f2106208700) at pthread_create.c:333
#20 0x00007f2110fa193f in clone () from /lib/x86_64-linux-gnu/libc.so.6



 Comments   
Comment by Sachin Setiya (Inactive) [ 2019-02-24 ]

Actually after MDEV-18712 creating only index wont be possible , but we can create unique index.

Although this test is not causing and assert failure

--source include/have_innodb.inc
 
CREATE TABLE t1 ( 
  pk INT,
  c CHAR(100),
  b BLOB,
  PRIMARY KEY(pk),
  KEY(c(64)),
  UNIQUE KEY(b,c(64))
) ENGINE=InnoDB;
 
ALTER TABLE t1 FORCE;
 
# Cleanup
 DROP TABLE t1;

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