Skip to content

Commit 8541626

Browse files
committed
MDEV-11518 Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed in Field_long::val_int()
QUICK_RANGE_SELECT::init_ror_merged_scan() should also set and restore TABLE::vcol_set
1 parent c697ddc commit 8541626

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

mysql-test/suite/vcol/r/range.result

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
create table t1 (pk int, i int, v int as (i*2) virtual, primary key (pk), key (v)) engine=myisam;
2+
insert into t1 (pk,i) values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8);
3+
create table t2 (a int, b int) engine=myisam;
4+
insert into t2 values (1,2),(2,4);
5+
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk );
6+
pk i v a b
7+
1 1 0 1 2
8+
2 2 0 2 4
9+
drop table t1, t2;

mysql-test/suite/vcol/t/range.test

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#
2+
# MDEV-11518 Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed in Field_long::val_int()
3+
#
4+
create table t1 (pk int, i int, v int as (i*2) virtual, primary key (pk), key (v)) engine=myisam;
5+
insert into t1 (pk,i) values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8);
6+
create table t2 (a int, b int) engine=myisam;
7+
insert into t2 values (1,2),(2,4);
8+
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk );
9+
drop table t1, t2;
10+

sql/opt_range.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,6 +1477,7 @@ int QUICK_RANGE_SELECT::init_ror_merged_scan(bool reuse_handler,
14771477
handler *save_file= file, *org_file;
14781478
my_bool org_key_read;
14791479
THD *thd= head->in_use;
1480+
MY_BITMAP * const save_vcol_set= head->vcol_set;
14801481
MY_BITMAP * const save_read_set= head->read_set;
14811482
MY_BITMAP * const save_write_set= head->write_set;
14821483
DBUG_ENTER("QUICK_RANGE_SELECT::init_ror_merged_scan");
@@ -1489,7 +1490,7 @@ int QUICK_RANGE_SELECT::init_ror_merged_scan(bool reuse_handler,
14891490
{
14901491
DBUG_RETURN(1);
14911492
}
1492-
head->column_bitmaps_set(&column_bitmap, &column_bitmap);
1493+
head->column_bitmaps_set(&column_bitmap, &column_bitmap, &column_bitmap);
14931494
goto end;
14941495
}
14951496

@@ -1514,7 +1515,7 @@ int QUICK_RANGE_SELECT::init_ror_merged_scan(bool reuse_handler,
15141515
goto failure; /* purecov: inspected */
15151516
}
15161517

1517-
head->column_bitmaps_set(&column_bitmap, &column_bitmap);
1518+
head->column_bitmaps_set(&column_bitmap, &column_bitmap, &column_bitmap);
15181519

15191520
if (file->ha_external_lock(thd, F_RDLCK))
15201521
goto failure;
@@ -1568,7 +1569,7 @@ int QUICK_RANGE_SELECT::init_ror_merged_scan(bool reuse_handler,
15681569
DBUG_RETURN(0);
15691570

15701571
failure:
1571-
head->column_bitmaps_set(save_read_set, save_write_set);
1572+
head->column_bitmaps_set(save_read_set, save_write_set, save_vcol_set);
15721573
delete file;
15731574
file= save_file;
15741575
DBUG_RETURN(1);

0 commit comments

Comments
 (0)