summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2017-02-02 00:47:07 +0100
committerSergei Golubchik <serg@mariadb.org>2017-02-13 18:12:05 +0100
commite46c42217f4fc7ba43992ca54c039f2556d1859f (patch)
treececd39b5d2528eb4ff102e1a86f2a17aec6cc0dc
parent460ff39871d6554ec17714a79a174cf8f80f7817 (diff)
downloadmariadb-git-e46c42217f4fc7ba43992ca54c039f2556d1859f.tar.gz
cleanup: TABLE::mark_columns_used_by_index()
mark_columns_used_by_index used to do reset + mark_columns_used_by_index_no_reset + start keyread + set bitmaps Now prepare_for_keyread does that, while mark_columns_used_by_index does only reset + mark_columns_used_by_index_no_reset, just as its name suggests.
-rw-r--r--sql/handler.cc4
-rw-r--r--sql/key.cc3
-rw-r--r--sql/opt_range.cc2
-rw-r--r--sql/sql_class.cc8
-rw-r--r--sql/sql_update.cc4
-rw-r--r--sql/table.cc34
-rw-r--r--sql/table.h9
7 files changed, 32 insertions, 32 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index d32b13ef5fb..8781db30889 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -3224,7 +3224,7 @@ void handler::get_auto_increment(ulonglong offset, ulonglong increment,
int error;
MY_BITMAP *old_read_set;
- old_read_set= table->mark_columns_used_by_index(table->s->next_number_index);
+ old_read_set= table->prepare_for_keyread(table->s->next_number_index);
if (ha_index_init(table->s->next_number_index, 1))
{
@@ -3276,7 +3276,7 @@ void handler::get_auto_increment(ulonglong offset, ulonglong increment,
nr= ((ulonglong) table->next_number_field->
val_int_offset(table->s->rec_buff_length)+1);
ha_index_end();
- table->restore_column_maps_after_mark_index(old_read_set);
+ table->restore_column_maps_after_keyread(old_read_set);
*first_value= nr;
return;
}
diff --git a/sql/key.cc b/sql/key.cc
index 3bb009fcac9..bb10e902b8b 100644
--- a/sql/key.cc
+++ b/sql/key.cc
@@ -465,8 +465,7 @@ void key_unpack(String *to, TABLE *table, KEY *key)
bool is_key_used(TABLE *table, uint idx, const MY_BITMAP *fields)
{
- bitmap_clear_all(&table->tmp_set);
- table->mark_columns_used_by_index_no_reset(idx, &table->tmp_set);
+ table->mark_columns_used_by_index(idx, &table->tmp_set);
return bitmap_is_overlapping(&table->tmp_set, fields);
}
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 58c6d8d0b2d..f013f6ae254 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -1534,7 +1534,7 @@ end:
head->file= file;
head->column_bitmaps_set_no_signal(&column_bitmap, &column_bitmap, &column_bitmap);
- head->mark_columns_used_by_index_in_bitmap(index, &column_bitmap);
+ head->prepare_for_keyread(index, &column_bitmap);
head->prepare_for_position();
head->file= org_file;
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index f63ba4ed657..f042e6600e0 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -6489,21 +6489,19 @@ void THD::binlog_prepare_row_images(TABLE *table)
*/
DBUG_ASSERT(table->read_set != &table->tmp_set);
- bitmap_clear_all(&table->tmp_set);
-
switch(thd->variables.binlog_row_image)
{
case BINLOG_ROW_IMAGE_MINIMAL:
/* MINIMAL: Mark only PK */
- table->mark_columns_used_by_index_no_reset(table->s->primary_key,
- &table->tmp_set);
+ table->mark_columns_used_by_index(table->s->primary_key,
+ &table->tmp_set);
break;
case BINLOG_ROW_IMAGE_NOBLOB:
/**
NOBLOB: Remove unnecessary BLOB fields from read_set
(the ones that are not part of PK).
*/
- bitmap_union(&table->tmp_set, table->read_set);
+ bitmap_copy(&table->tmp_set, table->read_set);
for (Field **ptr=table->field ; *ptr ; ptr++)
{
Field *field= (*ptr);
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index a74a4c2b761..9c0e9443b0d 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -191,7 +191,7 @@ static void prepare_record_for_error_message(int error, TABLE *table)
/* Create unique_map with all fields used by that index. */
my_bitmap_init(&unique_map, unique_map_buf, table->s->fields, FALSE);
- table->mark_columns_used_by_index_no_reset(keynr, &unique_map);
+ table->mark_columns_used_by_index(keynr, &unique_map);
/* Subtract read_set and write_set. */
bitmap_subtract(&unique_map, table->read_set);
@@ -539,7 +539,7 @@ int mysql_update(THD *thd,
MY_BITMAP *save_write_set= table->write_set;
if (query_plan.index < MAX_KEY && old_covering_keys.is_set(query_plan.index))
- table->mark_columns_used_by_index(query_plan.index);
+ table->prepare_for_keyread(query_plan.index);
else
table->use_all_columns();
diff --git a/sql/table.cc b/sql/table.cc
index c9b356bbbed..093adf339b4 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -6070,27 +6070,29 @@ void TABLE::prepare_for_position()
}
-/*
- Mark that only fields from one key is used
-
- NOTE:
- This changes the bitmap to use the tmp bitmap
- After this, you can't access any other columns in the table until
- bitmaps are reset, for example with TABLE::clear_column_bitmaps()
- or TABLE::restore_column_maps_after_mark_index()
-*/
-
-MY_BITMAP *TABLE::mark_columns_used_by_index_in_bitmap(uint index,
- MY_BITMAP *bitmap)
+MY_BITMAP *TABLE::prepare_for_keyread(uint index, MY_BITMAP *map)
{
MY_BITMAP *backup= read_set;
- DBUG_ENTER("TABLE::mark_columns_used_by_index_in_bitmap");
+ DBUG_ENTER("TABLE::prepare_for_keyread");
if (!no_keyread)
file->ha_start_keyread();
+ mark_columns_used_by_index(index, map);
+ column_bitmaps_set(map);
+ DBUG_RETURN(backup);
+}
+
+
+/*
+ Mark that only fields from one key is used. Useful before keyread.
+*/
+
+void TABLE::mark_columns_used_by_index(uint index, MY_BITMAP *bitmap)
+{
+ DBUG_ENTER("TABLE::mark_columns_used_by_index");
+
bitmap_clear_all(bitmap);
mark_columns_used_by_index_no_reset(index, bitmap);
- column_bitmaps_set(bitmap);
- DBUG_RETURN(backup);
+ DBUG_VOID_RETURN;
}
/*
@@ -6104,7 +6106,7 @@ MY_BITMAP *TABLE::mark_columns_used_by_index_in_bitmap(uint index,
when calling mark_columns_used_by_index
*/
-void TABLE::restore_column_maps_after_mark_index(MY_BITMAP *backup)
+void TABLE::restore_column_maps_after_keyread(MY_BITMAP *backup)
{
DBUG_ENTER("TABLE::restore_column_maps_after_mark_index");
file->ha_end_keyread();
diff --git a/sql/table.h b/sql/table.h
index 61efea0c5b3..adfefba3234 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -1306,11 +1306,12 @@ public:
void reset_item_list(List<Item> *item_list) const;
void clear_column_bitmaps(void);
void prepare_for_position(void);
+ MY_BITMAP *prepare_for_keyread(uint index, MY_BITMAP *map);
+ MY_BITMAP *prepare_for_keyread(uint index)
+ { return prepare_for_keyread(index, &tmp_set); }
+ void mark_columns_used_by_index(uint index, MY_BITMAP *map);
void mark_columns_used_by_index_no_reset(uint index, MY_BITMAP *map);
- MY_BITMAP *mark_columns_used_by_index_in_bitmap(uint index, MY_BITMAP *map);
- MY_BITMAP *mark_columns_used_by_index(uint index)
- { return mark_columns_used_by_index_in_bitmap(index, &tmp_set); }
- void restore_column_maps_after_mark_index(MY_BITMAP *backup);
+ void restore_column_maps_after_keyread(MY_BITMAP *backup);
void mark_auto_increment_column(void);
void mark_columns_needed_for_update(void);
void mark_columns_needed_for_delete(void);