1. 17 Jan, 2018 4 commits
    • Marko Mäkelä's avatar
      Merge bb-10.2-ext into 10.3 · 4ef2e430
      Marko Mäkelä authored
      4ef2e430
    • Marko Mäkelä's avatar
      Merge 10.2 into bb-10.2-ext · c6cd64f3
      Marko Mäkelä authored
      c6cd64f3
    • Marko Mäkelä's avatar
      Follow-up fix to MDEV-14585 Automatically remove #sql- tables in InnoDB dictionary during recovery · 656f66de
      Marko Mäkelä authored
      If InnoDB is killed while ALTER TABLE...ALGORITHM=COPY is in progress,
      after recovery there could be undo log records some records that were
      inserted into an intermediate copy of the table. Due to these undo log
      records, InnoDB would resurrect locks at recovery, and the intermediate
      table would be locked while we are trying to drop it. This would cause
      a call to row_rename_table_for_mysql(), either from
      row_mysql_drop_garbage_tables() or from the rollback of a RENAME
      operation that was part of the ALTER TABLE.
      
      row_rename_table_for_mysql(): Do not attempt to parse FOREIGN KEY
      constraints when renaming from #sql-something to #sql-something-else,
      because it does not make any sense.
      
      row_drop_table_for_mysql(): When deferring DROP TABLE due to locks,
      do not rename the table if its name already starts with the #sql-
      prefix, which is what row_mysql_drop_garbage_tables() uses.
      Previously, the too strict prefix #sql-ib was used, and some
      tables were renamed unnecessarily.
      656f66de
    • Marko Mäkelä's avatar
      Do not define unused function mark_blocks_free() · 04eef79b
      Marko Mäkelä authored
      Follow-up to commit 9ec19b9b
      04eef79b
  2. 16 Jan, 2018 31 commits
  3. 15 Jan, 2018 5 commits
    • Sergei Petrunia's avatar
      0292cd0a
    • Marko Mäkelä's avatar
      MDEV-14952 Avoid repeated calls to btr_get_search_latch() · 0664d633
      Marko Mäkelä authored
      btr_cur_search_to_nth_level(), btr_search_guess_on_hash(),
      btr_pcur_open_with_no_init_func(), row_sel_open_pcur():
      Replace the parameter has_search_latch with the ahi_latch
      (passed as NULL if the caller does not hold the latch).
      
      btr_search_update_hash_node_on_insert(),
      btr_search_update_hash_on_insert(),
      btr_search_build_page_hash_index(): Add the parameter ahi_latch.
      
      btr_search_x_lock(), btr_search_x_unlock(),
      btr_search_s_lock(), btr_search_s_unlock(): Remove.
      0664d633
    • Marko Mäkelä's avatar
      MDEV-14952 Avoid repeated calls to btr_get_search_latch() · 4beb699a
      Marko Mäkelä authored
      btr_cur_search_to_nth_level(), row_sel(): Do not bother to yield to
      waiting exclusive lock requests on the adaptive hash index latch.
      When the btr_search_latch was split into an array of latches
      in MySQL 5.7.8 as part of the Oracle Bug#20985298 fix, the "caching"
      of the latch across storage engine API calls was removed. Thus,
      X-lock requests should have a good chance of becoming served, and
      starvation should not be possible.
      
      btr_search_guess_on_hash(): Clean up a debug assertion.
      4beb699a
    • Marko Mäkelä's avatar
      btr_search_check_guess(): Remove the parameter 'mode' · 542ad0fa
      Marko Mäkelä authored
      Also, use 32-bit native reads to read the 32-bit aligned
      FIL_PAGE_PREV and FIL_PAGE_NEXT reads, to compare them to the
      byte order agnostic pattern FIL_NULL (0xffffffff).
      542ad0fa
    • Marko Mäkelä's avatar
      MDEV-14441 Deadlock due to InnoDB adaptive hash index · 12f804ac
      Marko Mäkelä authored
      This is mere code clean-up; the reported problem was already fixed
      in commit 3fdd3907.
      
      row_sel(): Remove the variable search_latch_locked.
      
      row_sel_try_search_shortcut(): Remove the parameter
      search_latch_locked, which was always passed as nonzero.
      
      row_sel_try_search_shortcut(), row_sel_try_search_shortcut_for_mysql():
      Do not expect the caller to acquire the AHI latch. Instead,
      acquire and release it inside this function.
      
      row_search_mvcc(): Remove a bogus condition on mysql_n_tables_locked.
      When the btr_search_latch was split into an array of latches
      in MySQL 5.7.8 as part of the Oracle Bug#20985298 fix, the "caching"
      of the latch across storage engine API calls was removed, and
      thus it is unnecessary to avoid adaptive hash index searches
      during INSERT...SELECT.
      12f804ac