diff options
author | Sergei Golubchik <serg@mariadb.org> | 2022-09-15 18:28:51 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2022-10-26 15:30:38 +0200 |
commit | adcbf015c94c0b7ab03d5cf9f79c7913d4e6589e (patch) | |
tree | c92ce20b89f045f7a2e045cf3894c73c3ae9813a /sql/table.cc | |
parent | bf62d8e7e78c5db4de35ce4fff79247ca3459905 (diff) | |
download | mariadb-git-adcbf015c94c0b7ab03d5cf9f79c7913d4e6589e.tar.gz |
cleanup: read_set/write_set are based on metadata
they should be set once, not for every row
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sql/table.cc b/sql/table.cc index 0476d8f2bd0..e94c8eabed0 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -7614,6 +7614,8 @@ void TABLE::mark_columns_needed_for_update() } if (s->versioned) { + bitmap_set_bit(write_set, s->vers.start_fieldno); + bitmap_set_bit(write_set, s->vers.end_fieldno); /* For System Versioning we have to read all columns since we store a copy of previous row with modified row_end back to a table. @@ -7671,6 +7673,12 @@ void TABLE::mark_columns_needed_for_insert() mark_auto_increment_column(); if (default_field) mark_default_fields_for_write(TRUE); + if (s->versioned) + { + bitmap_set_bit(write_set, s->vers.start_fieldno); + bitmap_set_bit(write_set, s->vers.end_fieldno); + bitmap_set_bit(read_set, s->vers.end_fieldno); + } /* Mark virtual columns for insert */ if (vfield) mark_virtual_columns_for_write(TRUE); @@ -9148,29 +9156,21 @@ bool TABLE::check_period_overlaps(const KEY &key, void TABLE::vers_update_fields() { if (!vers_write) - { - file->column_bitmaps_signal(); return; - } if (versioned(VERS_TIMESTAMP)) { - bitmap_set_bit(write_set, vers_start_field()->field_index); if (vers_start_field()->store_timestamp(in_use->query_start(), in_use->query_start_sec_part())) { DBUG_ASSERT(0); } vers_start_field()->set_has_explicit_value(); - bitmap_set_bit(read_set, vers_start_field()->field_index); } - bitmap_set_bit(write_set, vers_end_field()->field_index); vers_end_field()->set_max(); vers_end_field()->set_has_explicit_value(); - bitmap_set_bit(read_set, vers_end_field()->field_index); - file->column_bitmaps_signal(); if (vfield) update_virtual_fields(file, VCOL_UPDATE_FOR_READ); } |