1. 08 Apr, 2019 5 commits
    • Marko Mäkelä's avatar
      MDEV-19212: Replace macros with type-safe inline functions · e7f426d2
      Marko Mäkelä authored
      The regression that was reported in MDEV-19212 occurred due to use
      of macros that did not ensure that the arguments have compatible
      types.
      
      ut_2pow_remainder(), ut_2pow_round(), ut_calc_align(): Define as
      inline function templates.
      
      UT_CALC_ALIGN(): Define as a macro, because this is used in
      compile_time_assert(). Only starting with C++11 (MariaDB 10.4)
      we could define the inline functions as constexpr.
      e7f426d2
    • Marko Mäkelä's avatar
      MDEV-19212 4GB Limit on large_pages - integer overflow · f120a15b
      Marko Mäkelä authored
      os_mem_alloc_large(): Invoke the macro ut_2pow_round() with the
      correct argument type.
      
      innobase_large_page_size, innobase_use_large_pages,
      os_use_large_pages, os_large_page_size: Remove.
      Simply refer to opt_large_page_size, my_use_large_pages.
      f120a15b
    • Vlad Lesin's avatar
      MDEV-14192 Mariabackup assertion failure: byte_offset % OS_FILE_LOG_BLOCK_SIZE == 0 · caa8c20a
      Vlad Lesin authored
      xtrabackup_backup_func(): If the log checkpoint header changed
      since we last read it, search for the most recent checkpoint again.
      Otherwise, we could corrupt the backup of the redo log, because the
      least significant bits of checkpoint_lsn_start would not match
      log_sys->log.lsn.
      caa8c20a
    • Marko Mäkelä's avatar
      MDEV-8139: Clean up the freeing of B-tree pages · 4b822111
      Marko Mäkelä authored
      btr_page_free(): Renamed from btr_page_free_low().
      If scrubbing is enabled, zero out the page with proper redo logging.
      Only pass ahi=true to fseg_free_page() if the page is actually indexed.
      
      fil_space_t::modify_check(): Renamed from fsp_space_modify_check().
      
      fsp_init_file_page(): Define inline.
      4b822111
    • Sergei Golubchik's avatar
      cmake: force Boost dependency as needed · e124ff17
      Sergei Golubchik authored
      because FindBoost.cmake won't do it
      e124ff17
  2. 07 Apr, 2019 5 commits
  3. 06 Apr, 2019 9 commits
    • Marko Mäkelä's avatar
      MDEV-12699 preparation: Clean up recv_sys · 1d30b7b1
      Marko Mäkelä authored
      The recv_sys data structures are accessed not only from the thread
      that executes InnoDB plugin initialization, but also from the
      InnoDB I/O threads, which can invoke recv_recover_page().
      
      Assert that sufficient concurrency control is in place.
      Some code was accessing recv_sys data structures without
      holding recv_sys->mutex.
      
      recv_recover_page(bpage): Refactor the call from buf_page_io_complete()
      into a separate function that performs necessary steps. The
      main thread was unnecessarily releasing and reacquiring recv_sys->mutex.
      
      recv_recover_page(block,mtr,recv_addr): Pass more parameters from
      the caller. Avoid redundant lookups and computations. Eliminate some
      redundant variables.
      
      recv_get_fil_addr_struct(): Assert that recv_sys->mutex is being held.
      That was not always the case!
      
      recv_scan_log_recs(): Acquire recv_sys->mutex for the whole duration
      of the function. (While we are scanning and buffering redo log records,
      no pages can be read in.)
      
      recv_read_in_area(): Properly protect access with recv_sys->mutex.
      
      recv_apply_hashed_log_recs(): Check recv_addr->state only once,
      and continuously hold recv_sys->mutex. The mutex will be released
      and reacquired inside recv_recover_page() and recv_read_in_area(),
      allowing concurrent processing by buf_page_io_complete() in I/O threads.
      1d30b7b1
    • Marko Mäkelä's avatar
      MDEV-12699 preparation: Write MLOG_INDEX_LOAD for FTS_ tables · aa3f7a10
      Marko Mäkelä authored
      The record MLOG_INDEX_LOAD is supposed to be written to indicate that
      some page modifications bypassed redo logging, and that redo logging
      is now re-enabled. It was not written for fulltext indexes during
      ALTER TABLE.
      
      row_merge_write_redo(): Declare globally. Assert that the index
      is neither a spatial nor fulltext index.
      
      recv_mlog_index_load(): Observe a MLOG_INDEX_LOAD operation.
      
      recv_parse_log_recs(): Handle MLOG_INDEX_LOAD also in multi-record
      mini-transactions. Because of this omission, we should keep writing
      MLOG_INDEX_LOAD in single-record mini-transactions, because older
      versions of Mariabackup would fail.
      
      row_fts_merge_insert(): Write MLOG_INDEX_LOAD for the auxiliary
      tables of fulltext indexes.
      aa3f7a10
    • Marko Mäkelä's avatar
      MDEV-12699 preparation: Initialize the entire page on MLOG_ZIP_PAGE_COMPRESS · 45d338dc
      Marko Mäkelä authored
      The record MLOG_ZIP_PAGE_COMPRESS is similar to MLOG_INIT_FILE_PAGE2
      that it contains all the information needed to initialize the page.
      Like for the other record, do initialize the entire page on recovery.
      45d338dc
    • Marko Mäkelä's avatar
      buf_page_get_gen(): Allow BUF_GET_IF_IN_POOL with a dummy page_size · 1b95118c
      Marko Mäkelä authored
      The page_size argument to buf_page_get_gen() only matters when the
      page is going to be loaded into the buffer pool. Allow callers to
      pass a dummy parameter when using BUF_GET_IF_IN_POOL (which would
      return NULL if the block is not in the buffer pool).
      1b95118c
    • Marko Mäkelä's avatar
      Fix a crash in CHECK TABLE for corrupted encrypted root page · 80f29211
      Marko Mäkelä authored
      btr_root_get(): Ignore the root->page.encrypted flag.
      The purpose of this flag is questionable since
      commit 8c43f963.
      
      btr_validate_index(): Avoid crash if btr_root_get() returns NULL.
      80f29211
    • Marko Mäkelä's avatar
      MDEV-15528 preparation: Do not modify a freed page · 1d0380e0
      Marko Mäkelä authored
      btr_free_root(): Add the parameter bool invalidate.
      
      btr_free_root_invalidate(): Remove.
      1d0380e0
    • Marko Mäkelä's avatar
      Clean up the parsing of MLOG_INIT_FILE_PAGE2 · 56df18be
      Marko Mäkelä authored
      fsp_apply_init_file_page(): Renamed from fsp_init_file_page_low().
      
      fsp_parse_init_file_page(): Remove. The redo log record has no
      parameters.
      56df18be
    • Marko Mäkelä's avatar
      recv_recovery_is_on(): Add UNIV_UNLIKELY · 71f9552f
      Marko Mäkelä authored
      Normally, InnoDB is not in the process of executing crash recovery.
      Provide a hint to the compiler that the recovery-related code paths
      are rarely executed.
      71f9552f
    • Marko Mäkelä's avatar
      Re-record plugins.feedback_plugin_load · c56ae2df
      Marko Mäkelä authored
      c56ae2df
  4. 05 Apr, 2019 1 commit
  5. 04 Apr, 2019 3 commits
  6. 03 Apr, 2019 12 commits
  7. 02 Apr, 2019 5 commits
    • Sergei Golubchik's avatar
      MDEV-18298 Crashes server with segfault during role grants · 65d758aa
      Sergei Golubchik authored
      it was supposed to be `*(p-1)` not `*p-1`
      (the crash happens if `*p==0`)
      65d758aa
    • Sergei Golubchik's avatar
      cmake: only search for libraries that are needed · 409f69cd
      Sergei Golubchik authored
      in particular, don't search for libjemalloc.a, which is only
      needed for tokudb's ftcxx tests, when the tests aren't going
      to be built.
      409f69cd
    • Sergei Golubchik's avatar
      cmake: fix krb5 detection on SUSE · 7b527e63
      Sergei Golubchik authored
      `zypper install krb5-devel` installs executables outside of $PATH.
      It also installs /etc/profile.d/krb5.sh that is sourced by a new
      shell to add the new location to the $PATH. But this doesn't affect
      the current shell.
      
      Now decent Linux distros remind the user to run `. /etc/profile`
      to reload paths in such a case. SUSE doesn't and for a good reason -
      it doesn't work there. Because SUSE sets PROFILEREAD=true in the
      environment and /etc/profile does not do anything.
      
      By this point, one should not really expect `unset PROFILEREAD` to help,
      and it does not - PROFILEREAD is readonly, and cannot be unset.
      
      Apparently SUSE really *really* wants you to re-login between installing
      MariaDB build dependencies and actually running the rpmbuild.
      
      Which we cannot do it buildbot. And it would look very user-un-friendly
      in the Build Instructions section of the manual.
      
      So, we work around it - by adding SUSE krb5 path to the search list.
      
      THIS IS SUSEEEEEE!!!
      7b527e63
    • Sergei Golubchik's avatar
      speedup RPM builds · 0b2042fd
      Sergei Golubchik authored
      Filter out most common file types from automatic dependency collection.
      This makes `make package`  in centos73 VM three times faster
      0b2042fd
    • Marko Mäkelä's avatar
      MDEV-19085: Remove a bogus debug assertion · e3f44d8d
      Marko Mäkelä authored
      MariaDB does support InnoDB tables with no stored columns.
      (They are necessarily empty.)
      e3f44d8d