1. 13 Nov, 2020 2 commits
    • Marko Mäkelä's avatar
      MDEV-24188 Hang in buf_page_create() after reusing a previously freed page · bb328a2a
      Marko Mäkelä authored
      The fix of MDEV-23456 (commit b1009ae5)
      introduced a livelock between page flushing and a thread that is
      executing buf_page_create().
      
      buf_page_create(): If the current mini-transaction is holding
      an exclusive latch on the page, do not attempt to acquire another
      one, and do not care about any I/O fix.
      
      mtr_t::have_x_latch(): Replaces mtr_t::get_fix_count().
      
      dyn_buf_t::for_each_block(const Functor&) const: A new variant.
      
      rw_lock_own(): Add a const qualifier.
      
      Reviewed by: Thirunarayanan Balathandayuthapani
      bb328a2a
    • Igor Babaev's avatar
      MDEV-23619 MariaDB crash on WITH RECURSIVE UNION ALL (CTE) query · 190e8a4c
      Igor Babaev authored
      Due to a premature cleanup of the unit that specified a recursive CTE
      used in the second operand of union the server fell into an infinite
      loop in the reported test case. In other cases this premature cleanup
      could cause other problems.
      The bug is the result of a not quite correct fix for MDEV-17024. The
      unit that specifies a recursive CTE has to be cleaned only after the
      cleanup of the last external reference to this CTE. It means that
      cleanups of the unit triggered not by the cleanup of a external
      reference to the CTE must be blocked.
      Usage of local table chains in selects to get external references to
      recursive CTEs was not correct either because of possible merges of
      some selects.
      
      Also fixed a minor bug in st_select_lex::set_explain_type() that caused
      typing 'RECURSIVE UNION' instead of 'UNION' in EXPLAIN output for external
      references to a recursive CTE.
      190e8a4c
  2. 12 Nov, 2020 1 commit
    • Sujatha's avatar
      MDEV-4633: multi_source.simple test fails sporadically · 984a06db
      Sujatha authored
      Analysis:
      ========
      Writes to 'rli->log_space_total' needs to be synchronized, otherwise both
      SQL_THREAD and IO_THREAD can try to modify the variable simultaneously
      resulting in incorrect rli->log_space_total.  In the current test scenario
      SQL_THREAD is trying to decrement 'rli->log_space_total' in 'purge_first_log'
      and IO_THREAD is trying to increment the 'rli->log_space_total' in
      'queue_event' simultaneously. Hence test occasionally fails with  result
      mismatch.
      
      Fix:
      ===
      Convert 'rli->log_space_total' variable to atomic type.
      984a06db
  3. 11 Nov, 2020 5 commits
  4. 10 Nov, 2020 2 commits
    • Anel Husakovic's avatar
      MDEV-23769: MTR can abort before it prints the test result summary · cd927dd3
      Anel Husakovic authored
      - Patch is solving generating report on warning
              To repeat the error run single worker:
              ```
              ./mtr --mysqld=--lock-wait-timeout=-xx 1st 1st --force --parallel 1
              ```
              or `N` workers with `N+1` tests with failures and `force`
              ```
              ./mtr --mysqld=--lock-wait-timeout=-xx 1st 1st grant5 --force --parallel 2
              ```
      - Patch is doing cosmetic fix of `current_test` log file which holds the old log value of test `CURRENT TEST:..` in `mark_log()` in case of `unknown option` and as such
        the logic which is using it's content doesn't output valid log content and doesn't generate valid `$test->{'comment'}` message.asdf
      
      - Closing the socket/handler after the removing the handler from IO for
      consistency
      
      Reviewed by: serg@mariadb.com
      cd927dd3
    • Marko Mäkelä's avatar
      MDEV-24171 index_online_log is instrumented as rw-lock, not mutex · 5171ab80
      Marko Mäkelä authored
      The row_log_t::mutex is a mutex, yet it was instrumented as
      rw-lock in PERFORMANCE_SCHEMA.
      5171ab80
  5. 09 Nov, 2020 4 commits
    • Igor Babaev's avatar
      MDEV-23811: With large number of indexes optimizer chooses an inefficient plan · bea84aef
      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.
      bea84aef
    • Sergei Petrunia's avatar
      MDEV-24117: Memory management problem ...: Add a testcase · 1404f3be
      Sergei Petrunia authored
      Add a testcase.
      1404f3be
    • Sergei Petrunia's avatar
      MDEV-24117: Memory management problem in statistics state for ... IN · f81eef62
      Sergei Petrunia authored
      Part#1: Revert the patch that caused it:
      
      commit 291be494
      Author: Igor Babaev <igor@askmonty.org>
      Date:   Thu Sep 24 22:02:00 2020 -0700
      
          MDEV-23811: With large number of indexes optimizer chooses an inefficient plan
      f81eef62
    • Marko Mäkelä's avatar
      MDEV-7620: Remove the data structures · d01a034a
      Marko Mäkelä authored
      The instrumentation that was added in
      commit 90635c6f (MDEV-7620)
      was effectively reverted in MariaDB Server 10.2.2, in
      commit 2e814d47
      (which stopped reporting the statistics) and
      commit fec844ac
      (which stopped updating the statistics).
      
      Let us remove the orphan data members to reduce the memory footprint.
      d01a034a
  6. 05 Nov, 2020 2 commits
  7. 04 Nov, 2020 1 commit
  8. 03 Nov, 2020 3 commits
  9. 02 Nov, 2020 4 commits
  10. 01 Nov, 2020 1 commit
  11. 31 Oct, 2020 2 commits
    • Daniel Black's avatar
      MDEV-23630: mysqldump logically dump system table information · d6ea03fa
      Daniel Black authored
      Add --system={all, users, plugins, udfs, servers, stats, timezones}
      
      This will dump system information from the server in
      a logical form like:
      * CREATE USER
      * GRANT
      * SET DEFAULT ROLE
      * CREATE ROLE
      * CREATE SERVER
      * INSTALL PLUGIN
      * CREATE FUNCTION
      
      "stats" is the innodb statistics tables or EITS and
      these are dumped as INSERT/REPLACE INTO statements
      without recreating the table.
      
      "timezones" is the collection of timezone tables
      which are important to transfer to generate identical
      results on restoration.
      
      Two other options have an effect on the SQL generated by
      --system=all. These are mutually exclusive of each other.
      * --replace
      * --insert-ignore
      
      --replace will include "OR REPLACE" into the logical form
      like:
      * CREATE OR REPLACE USER ...
      * DROP ROLE IF EXISTS (MySQL-8.0+)
      * CREATE OR REPLACE ROLE ...
      * UNINSTALL PLUGIN IF EXISTS (10.4+) ... (before INSTALL PLUGIN)
      * DROP FUNCTION IF EXISTS (MySQL-5.7+)
      * CREATE OR REPLACE [AGGREGATE] FUNCTION
      * CREATE OR REPLACE SERVER
      
      --insert-ignore uses the construct " IF NOT EXISTS" where
      supported in the logical syntax.
      
      'CREATE OR REPLACE USER' includes protection against
      being run as the same user that is importing the mysqldump.
      
      Includes experimental support for dumping mysql-5.7/8.0
      system tables and exporting logical SQL compatible with MySQL.
      
      Updates mysqldump man page, including this information and
      (removing obsolute bug reference)
      
      Reviewed-by: anel@mariadb.org
      d6ea03fa
    • Elena Stepanova's avatar
      6d3792a9
  12. 30 Oct, 2020 5 commits
    • Marko Mäkelä's avatar
      MDEV-23991 fixup: Initialize the memory · 72eea39d
      Marko Mäkelä authored
      This regression was introduced in
      commit afc9d00c.
      This is a partial backport of
      commit 199863d7 from 10.4.
      72eea39d
    • Marko Mäkelä's avatar
      Update Connector/C · fbcd7c0c
      Marko Mäkelä authored
      fbcd7c0c
    • Varun Gupta's avatar
      MDEV-24033: SIGSEGV in __memcmp_avx2_movbe from queue_insert | SIGSEGV in... · 5a0c34e4
      Varun Gupta authored
       MDEV-24033: SIGSEGV in __memcmp_avx2_movbe from queue_insert | SIGSEGV in __memcmp_avx2_movbe from native_compare
      
      The issue here was the system variable max_sort_length was being applied
      to decimals and it was truncating the value for decimals to the number
      of bytes set by max_sort_length.
      This was leading to a buffer overflow as the values were written
      to the buffer without truncation and then we moved the offset to
      the number of bytes(set by max_sort_length), that are needed for comparison.
      
      The fix is to not apply max_sort_length for fixed size types like INT,
      DECIMALS and only apply max_sort_length for CHAR, VARCHARS, TEXT and
      BLOBS.
      5a0c34e4
    • Sergei Golubchik's avatar
      Fix RPM packaging on cmake 3.18+ · c7902186
      Sergei Golubchik authored
      cmake has caught up and since version 3.18 it started supporting
      CPACK_RPM_POST_TRANS_SCRIPT_FILE, something we've supported for
      two years and cmake 2.8.11. Both implementation add %posttrans tag
      and rpmbuild gets confused.
      
      Disable our implementation for cmake 3.18+
      c7902186
    • Jan Lindström's avatar
      Fix sporadic test failure on galera_parallel_apply_3nodes. · 5482d627
      Jan Lindström authored
      Test itself is not deterministic.
      5482d627
  13. 29 Oct, 2020 8 commits