1. 04 Dec, 2019 2 commits
    • Alexander Barkov's avatar
      Part1: MDEV-12518 Unify sql_yacc.yy and sql_yacc_ora.yy · 3f9d7072
      Alexander Barkov authored
      Mixing %type and %expect declarations:
      - sql_mode=ORACLE declarations look like an empty C code section
        inside sql_yacc.yy, consisting of an inactive #ifdef..#endif block.
      - sql_mode=DEFAULT declarations look like an empty C code section
        inside sql_yacc_ora.yy, consisting of an inactive #ifdef..#endif block.
      
      Mixing rules:
      - Adding a special rule _empty to the shared rule section.
      - Changing all instances of /*Empty*/ in sql_mode=DEFAULT and sql_mode=ORACLE
        specific sections to _empty.
      - Changing the rest of C style comments /*xxx*/ in
        sql_mode=DEFAULT and sql_mode=ORACLE specific blocks to C++ style: //xxx
      - Mixing sql_yacc.yy and sql_yacc_ora.yy, so
        sql_mode=ORACLE specific blocks sit in a comment inside sql_yacc.yy, and
        sql_mode=DEFAULT specific blocks sit in a comment inside sql_yacc_ora.yy.
      3f9d7072
    • Marko Mäkelä's avatar
      MDEV-21205 Assertion failure in btr_sec_min_rec_mark · bb459416
      Marko Mäkelä authored
      In commit af5947f4
      the function btr_discard_page() is invoking btr_set_min_rec_mark()
      with the wrong buf_block_t* object. node_ptr is on merge_block,
      not block.
      
      btr_discard_page(): Remove the variables merge_page, page, and
      always refer to block->frame or merge_block->frame instead.
      Also, limit the scope of node_ptr and avoid duplicated conditions.
      
      btr_set_min_rec_mark(): Add a template parameter, so that the
      caller can specify whether the page is supposed to have a left sibling.
      Otherwise, the assertion (which was introduced in the same commit)
      would fail in btr_discard_page().
      bb459416
  2. 03 Dec, 2019 13 commits
    • Daniel Bartholomew's avatar
      bump the VERSION · 3b9a978a
      Daniel Bartholomew authored
      3b9a978a
    • Marko Mäkelä's avatar
      MDEV-21174: Fix the 32-bit build · 2ac0e64c
      Marko Mäkelä authored
      mtr_t::write(): Add explicit narrowing type casts to avoid warnings
      about lossy implicit conversions.
      2ac0e64c
    • Marko Mäkelä's avatar
      MDEV-21174: Replace mlog_write_string() with mtr_t::memcpy() · af5947f4
      Marko Mäkelä authored
      mtr_t::memcpy(): Replaces mlog_write_string(), mlog_log_string().
      The buf_block_t is passed a parameter, so that
      mlog_write_initial_log_record_low() can be used instead of
      mlog_write_initial_log_record_fast().
      
      fil_space_crypt_t::write_page0(): Remove the fil_space_t* parameter.
      af5947f4
    • 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
  3. 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
  4. 30 Nov, 2019 1 commit
  5. 29 Nov, 2019 10 commits
  6. 28 Nov, 2019 6 commits