Browse Source

bugfix: TABLE::mark_columns_used_by_index

Do *not* modify write_set.
keyread only affects what columns are *read*, UPDATE statement can
*write* into columns that aren't part of the keyread.
pull/313/head
Sergei Golubchik 9 years ago
parent
commit
0254f1a6e0
  1. 2
      sql/table.cc
  2. 6
      sql/table.h

2
sql/table.cc

@ -6088,7 +6088,7 @@ void TABLE::mark_columns_used_by_index(uint index)
file->ha_start_keyread();
bitmap_clear_all(bitmap);
mark_columns_used_by_index_no_reset(index, bitmap);
column_bitmaps_set(bitmap, bitmap);
column_bitmaps_set(bitmap);
DBUG_VOID_RETURN;
}

6
sql/table.h

@ -1321,6 +1321,12 @@ public:
void mark_columns_used_by_check_constraints(void);
void mark_check_constraint_columns_for_read(void);
int verify_constraints(bool ignore_failure);
inline void column_bitmaps_set(MY_BITMAP *read_set_arg)
{
read_set= read_set_arg;
if (file)
file->column_bitmaps_signal();
}
inline void column_bitmaps_set(MY_BITMAP *read_set_arg,
MY_BITMAP *write_set_arg)
{

Loading…
Cancel
Save