1. 08 Oct, 2020 1 commit
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-21329 InnoDB: Failing assertion:... · 8984d779
      Thirunarayanan Balathandayuthapani authored
      MDEV-21329 InnoDB: Failing assertion: lock->lock_word.load(std::memory_order_relaxed) == X_LOCK_DECR upon server shutdown
      
      Problem is that dropping of fts table and sync of fts table
      happens concurrently during fts optimize thread shutdown.
      fts_optimize_remove_table() is executed by a user thread that
      performs DDL, and that the fts_optimize_wq may be removed if
      fts_optimize_shutdown() has started executing.
      
      fts_optimize_remove_table() doesn't remove the table from the queue
      and it leads to above scenario. While removing the table from
      fts_optimize_wq, if the table can't be removed then wait till
      fts_optimize_thread shuts down.
      
      Reviewed-by: Marko Mäkelä
      8984d779
  2. 07 Oct, 2020 2 commits
  3. 06 Oct, 2020 8 commits
    • Igor Babaev's avatar
      MDEV-23811: With large number of indexes optimizer chooses an inefficient plan · 291be494
      Igor Babaev authored
      This bug could manifest itself for a query with WHERE condition containing
      top level OR formula such that each conjunct contained a single-range
      condition supported by the same index. One of these range conditions must
      be fully covered by another range condition that is used later in the OR
      formula. Additionally at least one of these condition should be ANDed with
      a sargable range condition supported by a different index.
      
      There were several attempts to fix related problems for OR conditions after
      the backport of range optimizer code from MySQL (commit
      0e19f3e3). Unfortunately the first of these
      fixes contained typo remained unnoticed until recently. This typo bug led
      to rejection of valid range accesses. This patch fixed this typo bug.
      The fix revealed another two bugs: one in a constructor for SEL_ARG,
      the other in the function tree_or(). Both are fixed in this patch.
      291be494
    • Marko Mäkelä's avatar
      MDEV-23897 SIGSEGV on commit with innodb_lock_schedule_algorithm=VATS · 15951892
      Marko Mäkelä authored
      This regression for debug builds was introduced by
      MDEV-23101 (commit 224c9504).
      
      Due to MDEV-16664, the parameter
      innodb_lock_schedule_algorithm=VATS
      is not enabled by default.
      
      The purpose of the added assertions was to enforce the invariant that
      Galera replication cannot be enabled together with VATS due to MDEV-12837.
      However, upon closer inspection, it is obvious that the variable 'lock'
      may be assigned to the null pointer if no match is found in the
      previous->hash list.
      
      lock_grant_and_move_on_page(), lock_grant_and_move_on_rec():
      Assert !lock->trx->is_wsrep() only after ensuring that lock
      is not a null pointer.
      15951892
    • Aleksey Midenkov's avatar
      MDEV-23787 mtr --rr fixes · 2b832151
      Aleksey Midenkov authored
      1. rr record -h randomizes number of processors. Disable THREAD_POOL_SIZE check.
      
      2. check for kernel.perf_event_paranoid for user-friendly error message.
      2b832151
    • Oleksandr Byelkin's avatar
      MDEV-18163 Assertion `table_share->tmp_table != NO_TMP_TABLE || m_lock_type !=... · 5933081d
      Oleksandr Byelkin authored
      MDEV-18163 Assertion `table_share->tmp_table != NO_TMP_TABLE || m_lock_type != 2' failed in handler::ha_rnd_next(); / Assertion `table_list->table' failed in find_field_in_table_ref / ERROR 1901 (on optimized builds)
      
      Add the same check for altering DEFAULT used as for CREATE TABLE.
      5933081d
    • Daniel Black's avatar
      travis: 10.2 only - make faster · b3a9fbdb
      Daniel Black authored
      Remove from debian build:
      * tokudb
      * mroonga
      * spider
      * ograph
      * embedded server
      
      Add ccache to debian build.
      
      Backport 10.3 changes to autobake-deb
      that make travis faster.
      
      Merge instructions:
      Drop this commit on merge to 10.3
      b3a9fbdb
    • Eugene Kosov's avatar
      MDEV-23894 UBSAN: several call to function show_binlog_vars(THD*,... · 350c9eb7
      Eugene Kosov authored
      MDEV-23894 UBSAN: several call to function show_binlog_vars(THD*, st_mysql_show_var*, char*) through pointer to incorrect function type 'int (*)(THD *, st_mysql_show_var *, void *, system_status_var *, enum_var_type) errors
      350c9eb7
    • Jan Lindström's avatar
      MDEV-18593 : galera.galera_gcache_recover_full_gcache: Test failure:... · 33f19876
      Jan Lindström authored
      MDEV-18593 : galera.galera_gcache_recover_full_gcache: Test failure: galera_gcache_recover_full_gcache.test: assert_grep.inc failed
      
      Grep only the fact that we need to fall back to SST.
      33f19876
    • Marko Mäkelä's avatar
      MDEV-23888: Potential server hang on replication with InnoDB · 577c61e8
      Marko Mäkelä authored
      In MDEV-21452, SAFE_MUTEX flagged an ordering problem that involved
      trx_t::mutex, LOCK_global_system_variables, and LOCK_commit_ordered
      when running
      ./mtr --no-reorder\
       binlog.binlog_checksum,mix binlog.binlog_commit_wait,mix
      
      Because LOCK_commit_ordered is acquired by replication code before
      innobase_commit_ordered() is invoked, and because LOCK_commit_ordered
      should be below LOCK_global_system_variables in the global latching
      order, it turns out that we must avoid acquiring
      LOCK_global_system_variables in any low-level code.
      
      It also turns out that lock_rec_lock() acquires lock_sys_t::mutex
      and then carries on to call lock_rec_enqueue_waiting(), which may
      invoke THDVAR() via thd_lock_wait_timeout(). This call is problematic
      if THDVAR() had never been invoked in that thread earlier.
      
      innobase_trx_init(): Let us invoke THDVAR() at the start of an InnoDB
      transaction so that future invocations of THDVAR() will avoid
      LOCK_global_system_variables acquisition on the same THD. Because
      the first call to intern_sys_var_ptr() will initialize all session
      variables by not passing the offset to sync_dynamic_session_variables(),
      this will indeed make any future THDVAR() invocation mutex-free.
      
      There are some THDVAR() calls in other code (related to indexed virtual
      columns, fulltext indexes, and DDL operations). No SAFE_MUTEX warning
      was known for those, but there does not appear to be any replication
      test coverage for indexed virtual columns or fulltext indexes. DDL should
      be covered, and perhaps DDL code paths were already invoking THDVAR()
      while not holding any InnoDB mutex.
      
      Side note: MySQL should avoid this type of deadlocks since
      mysql/mysql-server@4d275c89954685e2ed1b368812b3b5a29ddf9389.
      MariaDB never defined alloc_and_copy_thd_dynamic_variables(),
      because we prefer to avoid overhead during connection creation.
      
      An important part of the deadlock could be the current handling of
      SET GLOBAL binlog_checksum=NONE; and similar assignments.
      In binlog_checksum_update(), we would hold LOCK_global_system_variables
      while potentially acquiring LOCK_commit_ordered in MYSQL_BIN_LOG::open().
      Even if that code was changed later to release
      LOCK_global_system_variables during the write to mysql_bin_log,
      it could be a good idea for performance to avoid invoking the
      expensive code path of THDVAR() while holding any InnoDB mutexes,
      such as lock_sys.mutex in lock_rec_enqueue_waiting().
      
      Thanks to Andrei Elkin for debugging the SAFE_MUTEX issue, and to
      Sergei Golubchik for the suggestion to invoke THDVAR() early.
      577c61e8
  4. 05 Oct, 2020 7 commits
  5. 03 Oct, 2020 1 commit
  6. 02 Oct, 2020 3 commits
  7. 30 Sep, 2020 2 commits
  8. 29 Sep, 2020 4 commits
  9. 28 Sep, 2020 5 commits
  10. 25 Sep, 2020 1 commit
  11. 24 Sep, 2020 1 commit
  12. 23 Sep, 2020 5 commits