Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.5, 10.3(EOL), 10.4(EOL)
Description
Corruption errors or Assertion `btr_validate_index(index, 0)' failed in row_upd_sec_index_entry upon DELETE HISTORY
Note: We have a variety of btr_validate_index bugs, so it might be one of them. But I can't tell which one it would be a duplicate of, so I'm filing it separately just in case.
--source include/have_innodb.inc
|
CREATE TABLE t1 ( |
a varchar(4096), |
UNIQUE KEY (a) |
) ENGINE=InnoDB WITH SYSTEM VERSIONING; |
|
INSERT INTO t1 VALUES ('foo'),('bar'); |
UPDATE IGNORE t1 SET a = 'qux'; |
DELETE HISTORY FROM t1; |
|
# Cleanup
|
DROP TABLE t1; |
10.4 debug b4417142 |
mysqld: /data/src/10.4/storage/innobase/row/row0upd.cc:2425: dberr_t row_upd_sec_index_entry(upd_node_t*, que_thr_t*): Assertion `btr_validate_index(index, 0)' failed.
|
190924 19:49:20 [ERROR] mysqld got signal 6 ;
|
|
#7 0x00007f889f0d1f12 in __GI___assert_fail (assertion=0x55b3d858f1c5 "btr_validate_index(index, 0)", file=0x55b3d858ea28 "/data/src/10.4/storage/innobase/row/row0upd.cc", line=2425, function=0x55b3d8591920 <row_upd_sec_index_entry(upd_node_t*, que_thr_t*)::__PRETTY_FUNCTION__> "dberr_t row_upd_sec_index_entry(upd_node_t*, que_thr_t*)") at assert.c:101
|
#8 0x000055b3d7db7fbb in row_upd_sec_index_entry (node=0x7f8844072b00, thr=0x7f8844072e68) at /data/src/10.4/storage/innobase/row/row0upd.cc:2425
|
#9 0x000055b3d7db87b6 in row_upd_sec_step (node=0x7f8844072b00, thr=0x7f8844072e68) at /data/src/10.4/storage/innobase/row/row0upd.cc:2539
|
#10 0x000055b3d7dbb721 in row_upd (node=0x7f8844072b00, thr=0x7f8844072e68) at /data/src/10.4/storage/innobase/row/row0upd.cc:3315
|
#11 0x000055b3d7dbbb67 in row_upd_step (thr=0x7f8844072e68) at /data/src/10.4/storage/innobase/row/row0upd.cc:3430
|
#12 0x000055b3d7d596a3 in row_update_for_mysql (prebuilt=0x7f884414e788) at /data/src/10.4/storage/innobase/row/row0mysql.cc:1889
|
#13 0x000055b3d7bb8e96 in ha_innobase::delete_row (this=0x7f884414d338, record=0x7f88441385e8 "\374\003") at /data/src/10.4/storage/innobase/handler/ha_innodb.cc:8971
|
#14 0x000055b3d797aff8 in handler::ha_delete_row (this=0x7f884414d338, buf=0x7f88441385e8 "\374\003") at /data/src/10.4/sql/handler.cc:6782
|
#15 0x000055b3d7b352fb in TABLE::delete_row (this=0x7f884414c4d0) at /data/src/10.4/sql/sql_delete.cc:297
|
#16 0x000055b3d7b321d4 in mysql_delete (thd=0x7f8844000b00, table_list=0x7f8844013200, conds=0x0, order_list=0x7f88440054b0, limit=18446744073709551615, options=0, result=0x0) at /data/src/10.4/sql/sql_delete.cc:834
|
#17 0x000055b3d7610811 in mysql_execute_command (thd=0x7f8844000b00) at /data/src/10.4/sql/sql_parse.cc:4723
|
#18 0x000055b3d761c04f in mysql_parse (thd=0x7f8844000b00, rawbuf=0x7f8844013128 "DELETE HISTORY FROM t1", length=22, parser_state=0x7f88984a2170, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:7912
|
#19 0x000055b3d76072e2 in dispatch_command (command=COM_QUERY, thd=0x7f8844000b00, packet=0x7f884419e1a1 "DELETE HISTORY FROM t1", packet_length=22, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1841
|
#20 0x000055b3d760596f in do_command (thd=0x7f8844000b00) at /data/src/10.4/sql/sql_parse.cc:1359
|
#21 0x000055b3d778cdef in do_handle_one_connection (connect=0x55b3daa64250) at /data/src/10.4/sql/sql_connect.cc:1412
|
#22 0x000055b3d778cb3e in handle_one_connection (arg=0x55b3daa64250) at /data/src/10.4/sql/sql_connect.cc:1316
|
#23 0x000055b3d818c2ed in pfs_spawn_thread (arg=0x55b3da9a7f00) at /data/src/10.4/storage/perfschema/pfs.cc:1862
|
#24 0x00007f88a0c464a4 in start_thread (arg=0x7f88984a3700) at pthread_create.c:456
|
#25 0x00007f889f18ed0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
|
10.4 non-debug b4417142 |
2019-09-24 19:52:15 9 [ERROR] InnoDB: Record in index `a` of table `test`.`t1` was not found on update: TUPLE (info_bits=0, 2 fields): {[8]g " [ (0x67F29822F85B939F),[6] (0x000000000202)} at: COMPACT RECORD(info_bits=0, 2 fields): {[8])& Ex (0x29269F4578D5ADD8),[6] (0x000000000201)}
|
Same test case, but with MyISAM:
mysqltest: At line 9: query 'DELETE HISTORY FROM t1' failed: 126: Index for table './test/t1.MYI' is corrupt; try to repair it
|
Error log |
2019-09-24 19:57:50 9 [ERROR] mysqld: Index for table './test/t1.MYI' is corrupt; try to repair it
|
2019-09-24 19:57:50 9 [ERROR] mysqld: Index for table './test/t1.MYI' is corrupt; try to repair it
|
2019-09-24 19:57:50 9 [ERROR] Got an error from thread_id=9, /data/src/10.4/storage/myisam/mi_delete.c:121
|
2019-09-24 19:57:50 9 [ERROR] MySQL thread id 9, OS thread handle 140687717869312, query id 25 localhost root Updating
|
DELETE HISTORY FROM t1
|
2019-09-24 19:57:50 9 [ERROR] mysqld: Index for table 't1' is corrupt; try to repair it
|
Also reproducible on 10.5 8887effe.
The test case is not applicable to 10.3 due to the long index.
Attachments
Issue Links
- relates to
-
MDEV-371 Unique indexes for blobs
- Closed
-
MDEV-20610 Assertion failed or btr_validate_index(..) in row_upd_sec_index_entry on a time_zone change
- Stalled
-
MDEV-20618 Assertion `btr_validate_index(index, 0, false)' failed in row_upd_sec_index_entry
- Closed
-
MDEV-20763 Table corruption or Assertion `btr_validate_index(index, 0, false)' failed in row_upd_sec_index_entry with virtual column and EMPTY_STRING_IS_NULL SQL mode
- Closed
-
MDEV-22061 InnoDB: Assertion of missing row in sec index row_start upon REPLACE on a system-versioned table
- Closed