Description:
100503 12:01:57 InnoDB: Assertion failure in thread 1102518592 in file row/row0upd.c line 1726
InnoDB: Failing assertion: btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr)
when running an UPDATE on a BLOB field of an 8k compressed table.
Reproduces in the revision where bug#52964 is fixed.
How to repeat:
take the dataset for bug#52626 and run the following SQL:
update t1 set data=substring(data,1,length(data)-1);
commit;
update t1 set data = concat(data,data);
asserts with the followed stack:
#0 0x0000003c1ae0b9b2 in pthread_kill () from /lib64/libpthread.so.0
#1 0x000000000083ee3a in my_write_core (sig=6) at stacktrace.c:329
#2 0x00000000005e055f in handle_segfault (sig=6) at mysqld.cc:2571
#3 <signal handler called>
#4 0x0000003c1a230265 in raise () from /lib64/libc.so.6
#5 0x0000003c1a231d10 in abort () from /lib64/libc.so.6
#6 0x00002aaaabca4cf7 in row_upd_clust_rec (node=0x7c06380, index=0x7bae3d8,
thr=0x7c067b0, mtr=0x41b6ea10) at row/row0upd.c:1726
#7 0x00002aaaabca5434 in row_upd_clust_step (node=0x7c06380, thr=0x7c067b0)
at row/row0upd.c:1941
#8 0x00002aaaabca5621 in row_upd (node=0x7c06380, thr=0x7c067b0)
at row/row0upd.c:2018
#9 0x00002aaaabca5900 in row_upd_step (thr=0x7c067b0) at row/row0upd.c:2149
#10 0x00002aaaabc8f950 in row_update_for_mysql (mysql_rec=0x7c09468 "þx\\",
prebuilt=0x7b888c8) at row/row0mysql.c:1382
#11 0x00002aaaabc2a958 in ha_innodb::update_row (this=0x7c09240,
old_row=0x7c09468 "þx\\", new_row=0x7c09430 "þx\\")
at handler/ha_innodb.cc:5010
#12 0x00000000006fe99d in handler::ha_update_row (this=0x7c09240,
old_data=0x7c09468 "þx\\", new_data=0x7c09430 "þx\\") at handler.cc:4671
#13 0x0000000000693609 in mysql_update (thd=0x7bfd550, table_list=0x7c03f38,
fields=@0x7bff490, values=@0x7bff870, conds=0x0, order_num=0, order=0x0,
limit=18446744073709551478, handle_duplicates=DUP_ERROR, ignore=false)
at sql_update.cc:645
#14 0x00000000005efe0d in mysql_execute_command (thd=0x7bfd550)
at sql_parse.cc:3067
#15 0x00000000005f5c90 in mysql_parse (thd=0x7bfd550,
inBuf=0x7c03e40 "update t1 set data = concat(data,data)", length=38,
found_semicolon=0x41b70f40) at sql_parse.cc:5971
#16 0x00000000005f7173 in dispatch_command (command=COM_QUERY, thd=0x7bfd550,
packet=0x7bffe11 "update t1 set data = concat(data,data)",
packet_length=38) at sql_parse.cc:1233
#17 0x00000000005f8306 in do_command (thd=0x7bfd550) at sql_parse.cc:874
#18 0x00000000005e743d in handle_one_connection (arg=0x7bfd550)
at sql_connect.cc:1127
#19 0x0000003c1ae064a7 in start_thread () from /lib64/libpthread.so.0
#20 0x0000003c1a2d3c2d in clone () from /lib64/libc.so.6
requires the fix for bug#52964 otherwise the first UPDATE fails.