diff --git a/sql/item_func.cc b/sql/item_func.cc index e6c59ae466b..7806a37d8d0 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -3799,6 +3799,23 @@ Item_func_set_user_var::fix_length_and_dec() } +/* + Mark field in read_map + + NOTES + This is used by filesort to register used fields in a a temporary + column read set or to register used fields in a view +*/ + +bool Item_func_set_user_var::register_field_in_read_map(uchar *arg) +{ + TABLE *table= (TABLE *) arg; + if (result_field->table == table || !table) + bitmap_set_bit(result_field->table->read_set, result_field->field_index); + return 0; +} + + /* Set value to user variable. diff --git a/sql/item_func.h b/sql/item_func.h index 7bb0ebfb1bf..d2ed0404dac 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -1259,6 +1259,7 @@ public: return save_in_field(field, no_conversions, 1); } void save_org_in_field(Field *field) { (void)save_in_field(field, 1, 0); } + bool register_field_in_read_map(uchar *arg); };