1. 14 Nov, 2019 3 commits
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 3bee95d7
      Marko Mäkelä authored
      3bee95d7
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · bc5cfe77
      Marko Mäkelä authored
      bc5cfe77
    • Sujatha's avatar
      MDEV-20707: Missing memory barrier in parallel replication error handler in wait_for_prior_commit() · caa79081
      Sujatha authored
      revision-id: 673e253724979fd9fe43a4a22bd7e1b2c3a5269e
      Author: Kristian Nielsen
      
      Fix missing memory barrier in wait_for_commit.
      
      The function wait_for_commit::wait_for_prior_commit() has a fast path where it
      checks without locks if wakeup_subsequent_commits() has already been called.
      This check was missing a memory barrier. The waitee thread does two writes to
      variables `waitee' and `wakeup_error', and if the waiting thread sees the
      first write it _must_ also see the second or incorrect behavior will occur.
      This requires memory barriers between both the writes (release semantics) and
      the reads (acquire semantics) of those two variables.
      
      Other accesses to these variables are done under lock or where only one thread
      will be accessing them, and can be done without barriers (relaxed semantics).
      caa79081
  2. 13 Nov, 2019 5 commits
    • Marko Mäkelä's avatar
      MDEV-17138 follow-up: Optimize index page creation · 49019dde
      Marko Mäkelä authored
      btr_create(), btr_root_raise_and_insert(): Write a MLOG_MEMSET record
      to set FIL_PAGE_PREV,FIL_PAGE_NEXT to FIL_NULL, instead of writing
      two MLOG_4BYTES records.
      
      For ROW_FORMAT=COMPRESSED pages, we will not use MLOG_MEMSET
      because we want the crash-downgrade to earlier 10.4 releases to succeed.
      
      mlog_parse_nbytes(): Relax the too strict assertion. There is no problem
      with MLOG_MEMSET records that affect the uncompressed header of
      ROW_FORMAT=COMPRESSED index pages.
      49019dde
    • Sergei Petrunia's avatar
      MDEV-20646: 10.3.18 is slower than 10.3.17 · d4edb051
      Sergei Petrunia authored
      Fix incorrect change introduced in the fix for MDEV-20109.
      
      The patch tried to compute a more precise estimate for the record_count
      value in SJ-Materialization-Scan strategy (in
      Sj_materialization_picker::check_qep).  However the new formula is worse
      as it produces extremely optimistic results in common cases where
      SJ-Materialization-Scan should be used)
      
      The old formula produces pessimistic results in cases when Sj-Materialization-
      Scan is unlikely to be a good choice anyway. So, the old behavior is better.
      d4edb051
    • Marko Mäkelä's avatar
      Use constexpr for constants on data pages · 2b7aa60b
      Marko Mäkelä authored
      2b7aa60b
    • Marko Mäkelä's avatar
      Clean up mtr_t::commit() further · 3b573c07
      Marko Mäkelä authored
      memo_block_unfix(), memo_latch_release(): Merge to ReleaseLatches.
      
      memo_slot_release(), ReleaseAll: Clean up the formatting.
      3b573c07
    • Marko Mäkelä's avatar
      MDEV-20934: Correct a debug assertion · abd45cdc
      Marko Mäkelä authored
      A search with PAGE_CUR_GE may land on the supremum record on
      a leaf page that is not the rightmost leaf page.
      This could occur when all keys on the current page are
      smaller than the search key, and the smallest key on the
      successor page is larger than the search key.
      
      ibuf_delete_recs(): Correct the debug assertion accordingly.
      abd45cdc
  3. 12 Nov, 2019 10 commits
    • Eugene Kosov's avatar
      cleanup: replace List_iterator(_fast) in handler0alter.cc · ae72205e
      Eugene Kosov authored
      Basically, use more List<T>::iterator. This patch required adding two more
      overloads to new iterator for convenience.
      ae72205e
    • Kentoku SHIBA's avatar
      MDEV-18987 bug in "load data local infile xxx replace into " (#1408) · 83a0eaec
      Kentoku SHIBA authored
      It's just added regression tests.
      83a0eaec
    • Yasuhiro Horimoto's avatar
      Fix a typo in mariadb-plugin-mroonga.prerm · f127fb98
      Yasuhiro Horimoto authored
      Closes #1407
      f127fb98
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 33cb10d4
      Marko Mäkelä authored
      33cb10d4
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 5098d708
      Marko Mäkelä authored
      5098d708
    • Marko Mäkelä's avatar
      MDEV-12353 preparation: Clean up mtr_t · 2570cb8b
      Marko Mäkelä authored
      mtr_t::Impl, mtr_t::Command: Merge to mtr_t.
      
      MTR_MAGIC_N: Remove.
      
      MTR_STATE_COMMITTING: Remove. This state was only being set
      internally during mtr_t::commit().
      
      mtr_t::Command::m_locks_released: Remove (set-and-never-read member).
      
      mtr_t::Command::m_start_lsn: Replaced with the return value of
      finish_write() and a parameter to release_blocks().
      
      mtr_t::Command::m_end_lsn: Removed as a duplicate of mtr_t::m_commit_lsn.
      
      mtr_t::Command::prepare_write(): Replace a switch () with a
      comparison against 0. Only 2 m_log_mode are allowed.
      2570cb8b
    • Marko Mäkelä's avatar
      MDEV-14602: Cleanup recv_dblwr_t::find_page() · dc8380b6
      Marko Mäkelä authored
      Avoid creating std::vector, and use single instead of double traversal.
      dc8380b6
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 2350066e
      Marko Mäkelä authored
      2350066e
    • Sujatha's avatar
      MDEV-20953: binlog_encryption.rpl_corruption failed in buildbot due to wrong error code · 7df07c76
      Sujatha authored
      Problem:
      ========
      CURRENT_TEST: binlog_encryption.rpl_corruption
      
      mysqltest: In included file "./include/wait_for_slave_io_error.inc":
      ...
      At line 72: Slave stopped with wrong error code
      **** Slave stopped with wrong error code: 1743 (expected 1595,1913) ****
      
      Analysis:
      ========
      The test emulates the corruption at the various stages of replication for
      example in binlog file, in network and in relay log etc. It verifies that all
      corruption cases are handled through appropriate error messages.
      
      The test cases which emulate network failure expect following errors.
      --ER_SLAVE_RELAY_LOG_WRITE_FAILURE (1595)
      --ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE (1743)
      
      Ideally test should expect error codes as 1595 and 1743.
      But the test actually waits on incorrect error code 1595,1913
      
      Fix:
      ===
      Added appropriate error code for 'ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE'.
      Replaced 1913 with 1743.
      7df07c76
    • Eugene Kosov's avatar
      MDEV-20297 Support C++11 range-based for loop for List<T> · e5f99a0c
      Eugene Kosov authored
      New iterator has the fastest possible implementation: just moves one pointer.
      It's faster that List_iterator and List_iterator_fast: both do more on increment.
      
      Overall patch brings:
      1) work compile times
      2) possibly(!) worse debug build performance
      3) definitely better optimized build performance
      4) ability to write less code
      5) ability to write less bug-prone code
      e5f99a0c
  4. 11 Nov, 2019 15 commits
  5. 10 Nov, 2019 1 commit
    • Andrei Elkin's avatar
      MDEV-19376 Repl_semi_sync_master::commit_trx assertion failure: ... ||... · 13db50fc
      Andrei Elkin authored
      MDEV-19376 Repl_semi_sync_master::commit_trx assertion failure: ... || !m_active_tranxs->is_tranx_end_pos(trx_wait_binlog_name, trx_wait_binlog_pos)
      
      The assert indicates that the current transaction got caught uncleaned from
      the semisync master's cache when it is signaled to proceed upon its
      ack receive.
      
      The reason of missed cleanup turns out to be a flaw in the gtid
      connect mode.
      A submitted by connecting slave value of its last received event's
      binlog file *name* was adopted into
      {{Repl_semi_sync_master::m_reply_file_name}} as a part of semisync
      initialization.
      
      Notice that the initialization still refines the position part of the
      submitted last received event's binlog coordinates.
      The master side binlog filename:pos refinement is
      specific to the gtid connect mode for purpose of computing the latest
      binlog file to resume slave feeding from.
      Effectively in the gtid connect mode the computed resumption filename:pos
      may appear smaller in which case a new post-connect time committing
      transaction may be logged with its filename:pos also less than the
      submitted coordinates and that triggers the assert.
      
      Fixed with making the semisync initialization to use the refined filename:pos.
      It is guaranteed to be less than any new generated transaction's binlog:pos.
      13db50fc
  6. 08 Nov, 2019 6 commits