1. 14 Mar, 2019 2 commits
  2. 13 Mar, 2019 7 commits
  3. 12 Mar, 2019 11 commits
    • Sergey Vojtovich's avatar
      MDEV-18450 Slaves wait shutdown · 3568427d
      Sergey Vojtovich authored
      The patches features an optional shutdown behavior to hold on until
      after all connected slaves have been sent the last binlogged event.
      The connected slave is one whose START SLAVE has been acknowledged and
      that was not stopped since that though it could be technically
      reconnecting in background.
      
      The solution therefore disallows killing the dump thread until is has
      found EOF of the latest binlog file.  It is up to the shutdown
      requester (DBA) to set up a sufficiently large shutdown timeout value
      for shudown to wait patiently until lagging behind slaves have been
      synchronized. On the other hand if a specific slave needs exclusion
      from synchronization the DBA would have to stop it manually which
      would terminate its dump thread.
      
      `mysqladmin shutdown' is extended with a `--wait_for_all_slaves' option
      which translates to `SHUTDOW WAIT FOR ALL SLAVES' sql query
      to enable the feature on the client side.
      
      The patch also performs a small refactoring of the server shutdown
      around close_connections() to introduce kill thread phases which
      are two as of current.
      3568427d
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · e4505279
      Marko Mäkelä authored
      e4505279
    • Marko Mäkelä's avatar
      MDEV-18878: After-merge fixes · 69b33fca
      Marko Mäkelä authored
      In 10.3, all records will be processed by purge due to MDEV-12288.
      But, the insert undo records do not contain a transaction identifier.
      
      row_purge_parse_undo_rec(): Use node->trx_id=TRX_ID_MAX for the
      insert undo records. We cannot skip table lookups for these records
      after DISCARD TABLESPACE other than by 'detaching' the table from
      the undo logs by updating SYS_TABLES.ID on both DISCARD TABLESPACE
      and IMPORT TABLESPACE.
      
      Also, remove a redundant condition that was introduced
      in the merge commit 814205f3.
      69b33fca
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · b32bc70e
      Marko Mäkelä authored
      b32bc70e
    • Marko Mäkelä's avatar
      Add an end-of-tests marker to ease merges · f72760df
      Marko Mäkelä authored
      f72760df
    • Marko Mäkelä's avatar
      MDEV-18902 Uninitialized variable in recv_parse_log_recs() · bef947b4
      Marko Mäkelä authored
      recv_parse_log_recs(): Do not compare type if ptr==end_ptr
      (we have reached the end of the redo log parsing buffer),
      because it will not have been correctly initialized in that case.
      bef947b4
    • Marko Mäkelä's avatar
      MDEV-18878: Fix GCC -flifetime-dse · e070cfe3
      Marko Mäkelä authored
      GCC 6 and later can optimize away the memset() that is part of
      mem_heap_zalloc() in a placement new call. So, instead of relying
      on that kind of initialization, explicitly initialize the necessary
      fields in the constructors.
      
      que_common_t::que_common_t(): Initialize more fields in the
      default constructor.
      
      purge_vcol_info_t::purge_vcol_info_t(): Initialize all fields in
      the default constructor.
      
      purge_node_t::purge_node_t(): Initialize all necessary fields.
      
      Reference:
      
          https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388
      
          https://gcc.gnu.org/ml/gcc/2016-02/msg00207.html
      e070cfe3
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · e374755b
      Marko Mäkelä authored
      e374755b
    • Marko Mäkelä's avatar
      MDEV-18749: Fix GCC -flifetime-dse · 32de60bb
      Marko Mäkelä authored
      row_merge_create_fts_sort_index(): Initialize dict_col_t in
      an unambiguous way. GCC 6 and later appear to be able to optimize
      away the memset() that is part of mem_heap_zalloc() in the
      placement new call. Let us avoid using placement new in order
      to ensure that the objects will actually be initialized.
      
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388
      
      https://gcc.gnu.org/ml/gcc/2016-02/msg00207.html
      
      While the latter reference hints that the optimization is only
      applicable to non-POD types (and dict_col_t does not define
      any member functions before 10.2), it is most consistent to
      use the same initialization across all versions.
      32de60bb
    • Sergei Golubchik's avatar
      MDEV-17070 Table corruption or Assertion `table->file->stats.records > 0 ||... · 69abd437
      Sergei Golubchik authored
      MDEV-17070 Table corruption or Assertion `table->file->stats.records > 0 || error' or Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon actions on temporary table
      
      This was caused by a combination of factors:
      * MyISAM/Aria temporary tables historically never saved the state
        to disk (MYI/MAI), because the state never needed to persist
      * certain ALTER TABLE operations modify the original TABLE structure
        and if they fail, the original table has to be reopened to
        revert all changes (m_needs_reopen=1)
      
      as a result, when ALTER fails and MyISAM/Aria temp table gets reopened,
      it reads the stale state from the disk.
      
      As a fix, MyISAM/Aria tables now *always* write the state to disk
      on close, *unless* HA_EXTRA_PREPARE_FOR_DROP was done first. And
      the server now always does HA_EXTRA_PREPARE_FOR_DROP before dropping
      a temporary table.
      69abd437
    • Sergei Golubchik's avatar
      7025a51a
  4. 11 Mar, 2019 16 commits
  5. 09 Mar, 2019 4 commits