Description:
Assert hit during RQG testing with concurrent DDL/DML.
Thread 1 (Thread 0x7f4e3fc52700 (LWP 10733)):
...
#3 <signal handler called>
#4 raise () from /lib64/libc.so.6
#5 abort () from /lib64/libc.so.6
#6 __assert_fail_base () from /lib64/libc.so.6
#7 __assert_fail () from /lib64/libc.so.6
#8 Field_varstring::val_str (this=0x7f4ddc0335e0, val_buffer=0x7f4ddc039880, val_ptr=0x7f4ddc0399e8)
at sql/field.cc:7671
#9 Item_field::val_str (this=0x7f4ddc0399d8, str=0x7f4ddc039880)
at sql/item.cc:2932
#10 Item_func_substr::val_str (this=0x7f4ddc039870, str=0x7f4ddc039880)
at sql/item_strfunc.cc:1733
#11 Item::save_in_field_inner (this=0x7f4ddc039870, field=0x7f4ddc0111e0, no_conversions=false)
at sql/item.cc:6809
#12 Item::save_in_field (this=0x7f4ddc039870, field=0x7f4ddc0111e0, no_conversions=false)
at sql/item.cc:6724
#13 update_generated_read_fields (buf=0x7f4ddc0109a0 "\340\001", table=0x7f4ddc00fff0, active_index=64)
at sql/table.cc:7593
#14 handler::ha_rnd_next (this=0x7f4ddc00e810, buf=0x7f4ddc0109a0 "\340\001")
at sql/handler.cc:2821
#15 rr_sequential (info=0x7f4e3fc4fe10)
at sql/records.cc:510
#16 mysql_update (thd=0x7f4ddc000b70, fields=..., values=..., limit=18446744073709551615, handle_duplicates=DUP_ERROR, found_return=0x7f4e3fc50468, updated_return=0x7f4e3fc50460)
at sql/sql_update.cc:802
#17 Sql_cmd_update::try_single_table_update (this=0x7f4ddc006340, thd=0x7f4ddc000b70, switch_to_multitable=0x7f4e3fc5050f)
at sql/sql_update.cc:2883
#18 Sql_cmd_update::execute (this=0x7f4ddc006340, thd=0x7f4ddc000b70)
at sql/sql_update.cc:3010
#19 mysql_execute_command (thd=0x7f4ddc000b70, first_level=true)
at sql/sql_parse.cc:3529
#20 mysql_parse (thd=0x7f4ddc000b70, parser_state=0x7f4e3fc516a0)
at sql/sql_parse.cc:5518
#21 dispatch_command (thd=0x7f4ddc000b70, com_data=0x7f4e3fc51df0, command=COM_QUERY)
at sql/sql_parse.cc:1428
#22 do_command (thd=0x7f4ddc000b70)
at sql/sql_parse.cc:996
....
mysqld: sql/field.cc:7671: virtual String* Field_varstring::val_str(String*, String*): Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed.
13:53:07 UTC - mysqld got signal 6 ;
...
Query (7f4ddc005700): UPDATE t1 SET extra = col1
Connection ID (thread ID): 15
Status: NOT_KILLED
MySQL versions checked and showing that problem:
mysql-trunk 0e7d3f36871e0089ac68bdca1743d65bdcac70c1 2016-01-20
mysql-5.7 530c5bb1dd2139751b0da75f54c705ca394572b8 2016-01-20
all compiled with debug.
The test using mysql-5.7 compiled without debug passes
== does not show effects which are obvious bad like
unexpected server messages or crash or similar
Experiments showed that
- concurrent DDL/DML
- using a partitioned table with virtual column
seems to be required for the assert to show up.
How to repeat:
I will add more information soon.