diff options
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r-- | sql/sql_select.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc index d22f43a5bbc..78cf91decc7 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -16141,20 +16141,21 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, void setup_tmp_table_column_bitmaps(TABLE *table, uchar *bitmaps) { uint field_count= table->s->fields; + uint bitmap_size= bitmap_buffer_size(field_count); + + DBUG_ASSERT(table->s->vfields == 0 && table->def_vcol_set == 0); + my_bitmap_init(&table->def_read_set, (my_bitmap_map*) bitmaps, field_count, FALSE); - my_bitmap_init(&table->def_vcol_set, - (my_bitmap_map*) (bitmaps+ bitmap_buffer_size(field_count)), - field_count, FALSE); + bitmaps+= bitmap_size; my_bitmap_init(&table->tmp_set, - (my_bitmap_map*) (bitmaps+ 2*bitmap_buffer_size(field_count)), - field_count, FALSE); + (my_bitmap_map*) bitmaps, field_count, FALSE); + bitmaps+= bitmap_size; my_bitmap_init(&table->eq_join_set, - (my_bitmap_map*) (bitmaps+ 3*bitmap_buffer_size(field_count)), - field_count, FALSE); + (my_bitmap_map*) bitmaps, field_count, FALSE); + bitmaps+= bitmap_size; my_bitmap_init(&table->cond_set, - (my_bitmap_map*) (bitmaps+ 4*bitmap_buffer_size(field_count)), - field_count, FALSE); + (my_bitmap_map*) bitmaps, field_count, FALSE); /* write_set and all_set are copies of read_set */ table->def_write_set= table->def_read_set; table->s->all_set= table->def_read_set; |