1. 16 Jan, 2018 14 commits
  2. 15 Jan, 2018 17 commits
    • 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
    • Marko Mäkelä's avatar
      MDEV-14441 Deadlock due to InnoDB adaptive hash index · 458e33cf
      Marko Mäkelä authored
      This is not fixing the reported problem, but a potential problem that was
      introduced in MDEV-11369.
      
      row_sel_try_search_shortcut(), row_sel_try_search_shortcut_for_mysql():
      When an adaptive hash index search lands on top of rec_is_default_row(),
      we must skip the candidate and perform a normal search. This is because
      the adaptive hash index latch only protects the record from being deleted
      but does not prevent concurrent inserts into the page. Therefore, it is not
      safe to dereference the next-record pointer.
      458e33cf
    • Marko Mäkelä's avatar
      Merge bb-10.2-ext into 10.3 · 4ef25dbf
      Marko Mäkelä authored
      4ef25dbf
    • Marko Mäkelä's avatar
      Merge 10.2 into bb-10.2-ext · e2e74003
      Marko Mäkelä authored
      e2e74003
    • Marko Mäkelä's avatar
      MDEV-14441 InnoDB hangs when setting innodb_adaptive_hash_index=OFF during UPDATE · 3fdd3907
      Marko Mäkelä authored
      This race condition is a regression caused by MDEV-12121.
      
      btr_cur_update_in_place(): Determine block->index!=NULL only once
      in order to determine whether an adaptive hash index bucket needs
      to be exclusively locked and unlocked.
      
      If we evaluated block->index multiple times, and the adaptive hash
      index was disabled before we locked the adaptive hash index, then
      we would never release the adaptive hash index bucket latch, which
      would eventually lead to InnoDB hanging.
      3fdd3907
    • Monty's avatar
      Fixed compiler warnings in guess_malloc_library · abbce9ed
      Monty authored
      abbce9ed
    • Marko Mäkelä's avatar
      Merge 10.2 into bb-10.2-ext · 39f236a2
      Marko Mäkelä authored
      39f236a2
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 27b6b262
      Marko Mäkelä authored
      27b6b262
    • Marko Mäkelä's avatar
      4794e5b0
    • Sergei Petrunia's avatar
    • Marko Mäkelä's avatar
      MDEV-13626: Merge InnoDB test cases from MySQL 5.7 (part 6) · 850702da
      Marko Mäkelä authored
      innodb.truncate_inject: Replacement for innodb_zip.wl6501_error_1
      
      Note: unlike MySQL, in some cases TRUNCATE does not return
      an error in MariaDB. This should be fixed in the scope of
      MDEV-13564 or similar.
      850702da
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      MDEV-14655 Assertion `!fts_index' failed in prepare_inplace_alter_table_dict · 3d798be1
      Marko Mäkelä authored
      MariaDB inherits the MySQL limitation that ALGORITHM=INPLACE cannot
      create more than one FULLTEXT INDEX at a time. As part of the MDEV-11369
      Instant ADD COLUMN refactoring, MariaDB 10.3.2 accidentally stopped
      enforcing the restriction.
      
      Actually, it is a bug in MySQL 5.6 and MariaDB 10.0 that an ALTER TABLE
      statement with multiple ADD FULLTEXT INDEX but without explicit
      ALGORITHM=INPLACE would return in an error message, rather than
      executing the operation with ALGORITHM=COPY.
      
      ha_innobase::check_if_supported_inplace_alter(): Enforce the restriction
      on multiple FULLTEXT INDEX.
      
      prepare_inplace_alter_table_dict(): Replace some code with debug
      assertions. A "goto error_handled" at this point would result in
      another error, because the reference count of ctx->new_table would be 0.
      3d798be1
  3. 14 Jan, 2018 1 commit
    • Eugene Kosov's avatar
      Compilation speed (#546) · 72136ae7
      Eugene Kosov authored
      Speed up compilation
      
      Standard C++ headers contribute a lot to compilation time. Avoid algorithm
      and sstream in frequently used headers.
      72136ae7
  4. 13 Jan, 2018 7 commits
  5. 12 Jan, 2018 1 commit