1. 03 Dec, 2019 10 commits
    • Marko Mäkelä's avatar
      MDEV-21174: Replace mlog_memset() with mtr_t::memset() · 87839258
      Marko Mäkelä authored
      Passing buf_block_t helps us avoid calling
      mlog_write_initial_log_record_fast() and page_get_page_no(),
      and allows us to implement more debug checks, such as
      that on ROW_FORMAT=COMPRESSED index pages, only the page header
      may be modified by MLOG_MEMSET records.
      
      fseg_n_reserved_pages(): Add a buf_block_t parameter.
      87839258
    • Marko Mäkelä's avatar
      Cleanup: Remove some page_get_page_no() calls · caea64df
      Marko Mäkelä authored
      Refer to buf_page_t::id instead of parsing the tablespace identifier
      or page number from the buffer pool page.
      caea64df
    • Marko Mäkelä's avatar
      MDEV-21174: Replace mlog_write_ulint() with mtr_t::write() · 56f6dab1
      Marko Mäkelä authored
      mtr_t::write(): Replaces mlog_write_ulint(), mlog_write_ull().
      Optimize away writes if the page contents does not change,
      except when a dummy write has been explicitly requested.
      
      Because the member function template takes a block descriptor as a
      parameter, it is possible to introduce better consistency checks.
      Due to this, the code for handling file-based lists, undo logs
      and user transactions was refactored to pass around buf_block_t.
      56f6dab1
    • Marko Mäkelä's avatar
      MDEV-21174: Cleanup MLOG_PAGE_CREATE · 504823bc
      Marko Mäkelä authored
      page_create_write_log(), mlog_write_initial_log_record():
      Merge to the only caller, and use
      mlog_write_initial_log_record_low() for writing the log record.
      504823bc
    • Marko Mäkelä's avatar
      MDEV-16264: Minor cleanup · 57444a3b
      Marko Mäkelä authored
      aio_linux::m_max_io_count: Unused data member; remove.
      
      aiocb::m_ret_len: Declare as the more compatible type size_t.
      Unfortunately, ssize_t is not available on Microsoft Visual Studio.
      57444a3b
    • Marko Mäkelä's avatar
      MDEV-12353 preparation: Do not write MLOG_REC_MIN_MARK · cd92c6c8
      Marko Mäkelä authored
      btr_set_min_rec_mark(): Write MLOG_1BYTE instead of
      MLOG_REC_MIN_MARK or MLOG_COMP_REC_MIN_MARK.
      
      On ROW_FORMAT=COMPRESSED pages, the minimum record flag is not stored
      at all. The flag is computed for the uncompressed page by
      page_zip_decompress(). Hence, nothing needs to be logged for
      ROW_FORMAT=COMPRESSED tables for this operation.
      
      To facilitate crash-upgrade and hot backup from older versions,
      we will retain the code to parse and apply the old log record types
      MLOG_REC_MIN_MARK and MLOG_COMP_REC_MIN_MARK.
      cd92c6c8
    • Marko Mäkelä's avatar
      MDEV-12353 preparation: Do not write MLOG_FILE_WRITE_CRYPT_DATA · 8ebd91c1
      Marko Mäkelä authored
      The MLOG_FILE_WRITE_CRYPT_DATA record was completely redundant.
      It can be replaced with a single MLOG_WRITE_STRING record.
      
      To facilitate upgrade from older versions, we will retain
      fil_parse_write_crypt_data().
      
      fil_crypt_parse(): Recover fil_space_crypt_t::write_page0().
      
      fil_space_crypt_t::write_page0(): Write everything in a single
      MLOG_WRITE_STRING for easy parsing.
      
      fil_space_crypt_t::page0_offset: Remove.
      8ebd91c1
    • Marko Mäkelä's avatar
      MDEV-21133: Remove buf_frame_copy() · bf2cc467
      Marko Mäkelä authored
      bf2cc467
    • Aleksey Midenkov's avatar
      MDEV-17554 versioning partition tests reorganize · 6f899468
      Aleksey Midenkov authored
      Moved partition_rotation, partition_innodb to partition.test
      6f899468
    • Aleksey Midenkov's avatar
      MDEV-17554 history partitioning cleanups · 9ed8d364
      Aleksey Midenkov authored
      * Fixed missed warning on condition boundary
      * REORGANIZE cases
      * vers_utils.h removed
      * test cases cleanup
      9ed8d364
  2. 02 Dec, 2019 8 commits
    • Aleksey Midenkov's avatar
      Merge 10.4 into 10.5 · 8ed646f0
      Aleksey Midenkov authored
      8ed646f0
    • Aleksey Midenkov's avatar
      Merge 10.3 into 10.4 · 0b8b11b0
      Aleksey Midenkov authored
      0b8b11b0
    • Aleksey Midenkov's avatar
      MDEV-18929 2nd execution of SP does not detect ER_VERS_NOT_VERSIONED (10.4) · 1d46923a
      Aleksey Midenkov authored
      Don't do skip_setup_conds() unless all errors are checked.
      
      Fixes following errors:
            ER_PERIOD_NOT_FOUND
            ER_VERS_QUERY_IN_PARTITION
            ER_VERS_ENGINE_UNSUPPORTED
            ER_VERS_NOT_VERSIONED
      1d46923a
    • Aleksey Midenkov's avatar
      MDEV-18929 2nd execution of SP does not detect ER_VERS_NOT_VERSIONED · db32d945
      Aleksey Midenkov authored
      Don't do skip_setup_conds() unless all errors are checked.
      
      Fixes following errors:
            ER_PERIOD_NOT_FOUND
            ER_VERS_QUERY_IN_PARTITION
            ER_VERS_ENGINE_UNSUPPORTED
            ER_VERS_NOT_VERSIONED
      db32d945
    • Aleksey Midenkov's avatar
      MDEV-21011 Table corruption reported for versioned partitioned table after... · a7cf0db3
      Aleksey Midenkov authored
      MDEV-21011 Table corruption reported for versioned partitioned table after DELETE: "Found a misplaced row"
      
      LIMIT history partitions cannot be checked by existing algorithm of
      check_misplaced_rows() because working history partition is
      incremented each time another one is filled. The existing algorithm
      gets record and tries to decide partition id for it by
      get_partition_id(). For LIMIT history it will just get first
      non-filled partition.
      
      To fix such partitions it is required to do REBUILD instead of REPAIR.
      a7cf0db3
    • Aleksey Midenkov's avatar
      MDEV-21155 Assertion with versioned table upon DELETE from view of view after replacing first view · 6dd41e00
      Aleksey Midenkov authored
      When view is merged by DT_MERGE_FOR_INSERT it is then skipped from
      processing and doesn't update WHERE clause with
      vers_setup_conds(). Note that view itself cannot work in
      vers_setup_conds() because it doesn't have row_start, row_end
      fields. Thus it is required to descend down to material TABLE_LIST
      through calls of mysql_derived_prepare() and run vers_setup_conds()
      from there. Luckily, all views (views of views, views of views of
      views, etc.) are linked in one list through next_global pointer, so we
      can skip all views of views and get straight to non-view TABLE_LIST by
      checking its merge_underlying_list property for zero value (it is
      assigned by DT_MERGE_FOR_INSERT for merged derived tables).
      
      We have to do that only for UPDATE and DELETE. Other DML commands
      don't use WHERE clause.
      
      MDEV-21146 Assertion `m_lock_type == 2' in handler::ha_drop_table upon LOAD DATA
      
      LOAD DATA does not use WHERE and the above call of vers_setup_conds()
      is not needed. unit->prepare() led to wrongly locked temporary table.
      6dd41e00
    • Aleksey Midenkov's avatar
      MDEV-21147 Assertion `marked_for_read()' upon UPDATE on versioned table via view · 97aa07ab
      Aleksey Midenkov authored
      "write set" for replication finally got its correct place
      (mark_columns_per_binlog_row_image()). When done generally in
      mark_columns_needed_for_update() it affects optimization
      algorithm. used_key_is_modified, query_plan.using_io_buffer are
      wrongly set and that leads to wrong prepare_for_keyread() which limits
      read_set.
      97aa07ab
    • Aleksey Midenkov's avatar
      MDEV-20441 ER_CRASHED_ON_USAGE upon update on versioned Aria table · 498a96a4
      Aleksey Midenkov authored
      Turn read cache off for update and multi-update for versioned
      table. no_cache is reinited on each TABLE open because it is
      applicable for specific algorithms.
      
      As a side fix vers_insert_history_row() honors vers_write setting.
      
      Aria with row_format=fixed uses IO_CACHE of type READ_CACHE for
      sequential read in update loop. When history row is inserted inside
      this loop the cache misses it and fails with error.
      
      TODO:
      
      Currently maria_extra() does not support SEQ_READ_APPEND. Probably it
      might be possible to use this type of cache.
      498a96a4
  3. 30 Nov, 2019 1 commit
  4. 29 Nov, 2019 10 commits
  5. 28 Nov, 2019 11 commits