[MDEV-17356] Assertion `!table || !table->read_set || bitmap_is_set(table->read_set, field_index)' failed in Field_enum::val_int upon INSERT .. SELECT into table with index on virtual column Created: 2018-10-02  Updated: 2021-11-03  Resolved: 2021-11-03

Status: Closed
Project: MariaDB Server
Component/s: Data Manipulation - Insert, Data types, Virtual Columns
Affects Version/s: 10.4, 10.5
Fix Version/s: 10.4.21, 10.5.12, 10.6.4

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

Issue Links:
Relates
relates to MDEV-19306 Assertion `marked_for_read()' failed ... Closed

 Description   

CREATE TABLE t1 ( 
  pk INT AUTO_INCREMENT,
  f1 ENUM('','a','b'),
  f2 ENUM('','a','b') AS (f1) VIRTUAL,
  PRIMARY KEY(pk),
  UNIQUE(f2,pk)
) ENGINE=MyISAM;
INSERT INTO t1 (f1) VALUES ('');
ALTER TABLE t1 DROP PRIMARY KEY;
INSERT IGNORE INTO t1 SELECT * FROM t1;
 
# Cleanup
DROP TABLE t1;

10.4 55dd07765

mysqld: /data/src/10.4/sql/field.cc:8998: virtual longlong Field_enum::val_int(): Assertion `!table || !table->read_set || bitmap_is_set(table->read_set, field_index)' failed.
181003  0:08:18 [ERROR] mysqld got signal 6 ;
 
#7  0x00007fe109febee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x000055bb83d523ae in Field_enum::val_int (this=0x7fe0f40423b8) at /data/src/10.4/sql/field.cc:8998
#9  0x000055bb83d5f26f in Field_enum::store_field (this=0x7fe0f40424b0, from=0x7fe0f40423b8) at /data/src/10.4/sql/field.h:4100
#10 0x000055bb83d63a3a in field_conv_incompatible (to=0x7fe0f40424b0, from=0x7fe0f40423b8) at /data/src/10.4/sql/field_conv.cc:836
#11 0x000055bb83d63a96 in field_conv (to=0x7fe0f40424b0, from=0x7fe0f40423b8) at /data/src/10.4/sql/field_conv.cc:849
#12 0x000055bb83d96dfb in save_field_in_field (from=0x7fe0f40423b8, null_value=0x7fe0f400db0e, to=0x7fe0f40424b0, no_conversions=false) at /data/src/10.4/sql/item.cc:6447
#13 0x000055bb83d9703c in Item_field::save_in_field (this=0x7fe0f400da98, to=0x7fe0f40424b0, no_conversions=false) at /data/src/10.4/sql/item.cc:6498
#14 0x000055bb83b9395c in TABLE::update_virtual_fields (this=0x7fe0f4138960, h=0x7fe0f413e8c8, update_mode=VCOL_UPDATE_FOR_WRITE) at /data/src/10.4/sql/table.cc:7775
#15 0x000055bb839ed4da in fill_record (thd=0x7fe0f4000b00, table=0x7fe0f4138960, ptr=0x7fe0f40422d8, values=..., ignore_errors=true, use_value=false) at /data/src/10.4/sql/sql_base.cc:8500
#16 0x000055bb839ed615 in fill_record_n_invoke_before_triggers (thd=0x7fe0f4000b00, table=0x7fe0f4138960, ptr=0x7fe0f40422b8, values=..., ignore_errors=true, event=TRG_EVENT_INSERT) at /data/src/10.4/sql/sql_base.cc:8543
#17 0x000055bb83a38914 in select_insert::store_values (this=0x7fe0f40169f0, values=...) at /data/src/10.4/sql/sql_insert.cc:3889
#18 0x000055bb83a38599 in select_insert::send_data (this=0x7fe0f40169f0, values=...) at /data/src/10.4/sql/sql_insert.cc:3820
#19 0x000055bb83aeb054 in end_send (join=0x7fe0f4016aa0, join_tab=0x0, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20453
#20 0x000055bb83ae73d9 in do_select (join=0x7fe0f4016aa0, procedure=0x0) at /data/src/10.4/sql/sql_select.cc:18770
#21 0x000055bb83ac03b7 in JOIN::exec_inner (this=0x7fe0f4016aa0) at /data/src/10.4/sql/sql_select.cc:4089
#22 0x000055bb83abf828 in JOIN::exec (this=0x7fe0f4016aa0) at /data/src/10.4/sql/sql_select.cc:3883
#23 0x000055bb83ac0ab7 in mysql_select (thd=0x7fe0f4000b00, tables=0x7fe0f4015b68, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3489925888, result=0x7fe0f40169f0, unit=0x7fe0f40049b0, select_lex=0x7fe0f40155e0) at /data/src/10.4/sql/sql_select.cc:4288
#24 0x000055bb83ab23a6 in handle_select (thd=0x7fe0f4000b00, lex=0x7fe0f40048e8, result=0x7fe0f40169f0, setup_tables_done_option=1073741824) at /data/src/10.4/sql/sql_select.cc:382
#25 0x000055bb83a76579 in mysql_execute_command (thd=0x7fe0f4000b00) at /data/src/10.4/sql/sql_parse.cc:4837
#26 0x000055bb83a80905 in mysql_parse (thd=0x7fe0f4000b00, rawbuf=0x7fe0f4014e98 "INSERT IGNORE INTO t1 SELECT * FROM t1", length=38, parser_state=0x7fe1041925f0, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:8085
#27 0x000055bb83a6dd00 in dispatch_command (command=COM_QUERY, thd=0x7fe0f4000b00, packet=0x7fe0f411d4d1 "INSERT IGNORE INTO t1 SELECT * FROM t1", packet_length=38, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1850
#28 0x000055bb83a6c724 in do_command (thd=0x7fe0f4000b00) at /data/src/10.4/sql/sql_parse.cc:1395
#29 0x000055bb83bd50a5 in do_handle_one_connection (connect=0x55bb87c23750) at /data/src/10.4/sql/sql_connect.cc:1402
#30 0x000055bb83bd4e29 in handle_one_connection (arg=0x55bb87c23750) at /data/src/10.4/sql/sql_connect.cc:1308
#31 0x000055bb84076f4d in pfs_spawn_thread (arg=0x55bb87cb8fb0) at /data/src/10.4/storage/perfschema/pfs.cc:1862
#32 0x00007fe10bcc2494 in start_thread (arg=0x7fe104193700) at pthread_create.c:333
#33 0x00007fe10a0a893f in clone () from /lib/x86_64-linux-gnu/libc.so.6

Couldn't reproduce on 10.3.
Couldn't reproduce with InnoDB or Aria.
No visible effect on a non-debug build.



 Comments   
Comment by Alice Sherepa [ 2019-10-14 ]

10.4 899c843f11bc40bf473

#3  <signal handler called>
#4  0x00007fdc104f4428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#5  0x00007fdc104f602a in __GI_abort () at abort.c:89
#6  0x00007fdc104ecbd7 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x55bacddf06a0 "marked_for_read()", file=file@entry=0x55bacddf04d0 "/10.4/sql/field.cc", line=line@entry=9287, function=function@entry=0x55bacddf5be0 <Field_enum::val_int()::__PRETTY_FUNCTION__> "virtual longlong Field_enum::val_int()") at assert.c:92
#7  0x00007fdc104ecc82 in __GI___assert_fail (assertion=0x55bacddf06a0 "marked_for_read()", file=0x55bacddf04d0 "/10.4/sql/field.cc", line=9287, function=0x55bacddf5be0 <Field_enum::val_int()::__PRETTY_FUNCTION__> "virtual longlong Field_enum::val_int()") at assert.c:101
#8  0x000055bacd2ac25c in Field_enum::val_int (this=0x7fdbc006c0b8) at /10.4/sql/field.cc:9287
#9  0x000055bacd2bad17 in Field_enum::store_field (this=0x7fdbc006c1a8, from=0x7fdbc006c0b8) at /10.4/sql/field.h:4254
#10 0x000055bacd2bf823 in field_conv_incompatible (to=0x7fdbc006c1a8, from=0x7fdbc006c0b8) at /10.4/sql/field_conv.cc:851
#11 0x000055bacd2bf87f in field_conv (to=0x7fdbc006c1a8, from=0x7fdbc006c0b8) at /10.4/sql/field_conv.cc:864
#12 0x000055bacd2fbe3f in save_field_in_field (from=0x7fdbc006c0b8, null_value=0x7fdbc0153c06, to=0x7fdbc006c1a8, no_conversions=false) at /10.4/sql/item.cc:6395
#13 0x000055bacd2fc080 in Item_field::save_in_field (this=0x7fdbc0153b90, to=0x7fdbc006c1a8, no_conversions=false) at /10.4/sql/item.cc:6446
#14 0x000055bacd0a8467 in TABLE::update_virtual_fields (this=0x7fdbc0152480, h=0x7fdbc01532e8, update_mode=VCOL_UPDATE_FOR_WRITE) at /10.4/sql/table.cc:8269
#15 0x000055bacced9683 in fill_record (thd=0x7fdbc0000b00, table=0x7fdbc0152480, ptr=0x7fdbc006bfe0, values=..., ignore_errors=true, use_value=false) at /10.4/sql/sql_base.cc:8760
#16 0x000055bacced9781 in fill_record_n_invoke_before_triggers (thd=0x7fdbc0000b00, table=0x7fdbc0152480, ptr=0x7fdbc006bfc0, values=..., ignore_errors=true, event=TRG_EVENT_INSERT) at /10.4/sql/sql_base.cc:8801
#17 0x000055baccf2af44 in select_insert::store_values (this=0x7fdbc0014e78, values=...) at /10.4/sql/sql_insert.cc:3940
#18 0x000055baccf2abcd in select_insert::send_data (this=0x7fdbc0014e78, values=...) at /10.4/sql/sql_insert.cc:3871
#19 0x000055baccff0c63 in end_send (join=0x7fdbc0014f28, join_tab=0x0, end_of_records=false) at /10.4/sql/sql_select.cc:21373
#20 0x000055baccfecd75 in do_select (join=0x7fdbc0014f28, procedure=0x0) at /10.4/sql/sql_select.cc:19683
#21 0x000055baccfc1fbd in JOIN::exec_inner (this=0x7fdbc0014f28) at /10.4/sql/sql_select.cc:4386
#22 0x000055baccfc10fa in JOIN::exec (this=0x7fdbc0014f28) at /10.4/sql/sql_select.cc:4168
#23 0x000055baccfc280f in mysql_select (thd=0x7fdbc0000b00, tables=0x7fdbc0013e98, wild_num=1, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3489925888, result=0x7fdbc0014e78, unit=0x7fdbc0004a30, select_lex=0x7fdbc00138d8) at /10.4/sql/sql_select.cc:4600
#24 0x000055baccfb26f4 in handle_select (thd=0x7fdbc0000b00, lex=0x7fdbc0004968, result=0x7fdbc0014e78, setup_tables_done_option=1073741824) at /10.4/sql/sql_select.cc:420
#25 0x000055baccf71170 in mysql_execute_command (thd=0x7fdbc0000b00) at /10.4/sql/sql_parse.cc:4638
#26 0x000055baccf7cfaf in mysql_parse (thd=0x7fdbc0000b00, rawbuf=0x7fdbc0013128 "INSERT IGNORE INTO t1 SELECT * FROM t1", length=38, parser_state=0x7fdc08a6fff0, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:7912
#27 0x000055baccf68248 in dispatch_command (command=COM_QUERY, thd=0x7fdbc0000b00, packet=0x7fdbc019e081 "INSERT IGNORE INTO t1 SELECT * FROM t1", packet_length=38, is_com_multi=false, is_next_command=false) at /10.4/sql/sql_parse.cc:1841
#28 0x000055baccf668a9 in do_command (thd=0x7fdbc0000b00) at /10.4/sql/sql_parse.cc:1359
#29 0x000055bacd0ef5a5 in do_handle_one_connection (connect=0x55bacf973330) at /10.4/sql/sql_connect.cc:1412
#30 0x000055bacd0ef2ce in handle_one_connection (arg=0x55bacf973330) at /10.4/sql/sql_connect.cc:1316
#31 0x000055bacdaf49eb in pfs_spawn_thread (arg=0x55bacf8f1970) at /10.4/storage/perfschema/pfs.cc:1862
#32 0x00007fdc119e36ba in start_thread (arg=0x7fdc08a71700) at pthread_create.c:333
#33 0x00007fdc105c641d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Comment by Elena Stepanova [ 2021-11-03 ]

The failure disappeared from 10.4 after this merge

commit 7841a7eb09208f52fcbab7e80e38c7ca29b1339e
Merge: 77992bc710b 1423cf5e3dc
Author: Oleksandr Byelkin
Date:   Sat Jul 31 22:59:58 2021 +0200
 
    Merge branch '10.3' into 10.4

There were several fixes which may well be related, e.g. MDEV-17890, MDEV-18166, MDEV-18249, MDEV-23597, apparently one of them fixed the problem.

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