1. 27 Apr, 2020 5 commits
  2. 26 Apr, 2020 1 commit
    • Monty's avatar
      Fixed shutdown crash in Aria that affects debug binaries · 81511b47
      Monty authored
      MDEV-18286 Assertion `pagecache->cnt_for_resize_op == 0' failed in
      check_pagecache_is_cleaned_up on server shutdown
      
      The reason for the crash is that the counter-of-pinned-pages in the
      Aria pagecache goes wrong.
      This only affects debug builds, as in these we do an assert on shutdown
      if the counter-of-pinned-pages is not 0 (some page was left pinned).
      
      The bug was that in 2 places in the page cache, when not succeeding to
      pin a page and a retry was made, the counter-of-pinned-pages counter was
      not properly adjusted.
      
      In the given test case, BLOCK_COMMIT flushed all Aria files. If a block was flushed at the same time the insert tried to access it, the insert would retry to get the block and that would cause the counter to go wrong.
      81511b47
  3. 24 Apr, 2020 5 commits
    • Marko Mäkelä's avatar
      MDEV-14735: Fix -Wunused-const-variable · a1978252
      Marko Mäkelä authored
      a1978252
    • Marko Mäkelä's avatar
      Fixup d1c3342d for --embedded · be42004d
      Marko Mäkelä authored
      be42004d
    • Marko Mäkelä's avatar
      MDEV-7962 wsrep_on() takes 0.14% in OLTP RO · edd38b50
      Marko Mäkelä authored
      The reason why we have wsrep_on() at all is that the macro WSREP(thd)
      depends on the definition of THD, and that is intentionally an opaque
      data type for InnoDB. So, we cannot avoid invoking wsrep_on(), but
      we can evaluate the less expensive conditions thd && WSREP_ON before
      calling the function.
      
      Global_read_lock: Use WSREP_NNULL(thd) instead of wsrep_on(thd)
      because we not only know the definition of THD but also that
      the pointer is not null.
      
      wsrep_open(): Use WSREP(thd) instead of wsrep_on(thd).
      
      InnoDB: Replace thd && wsrep_on(thd) with wsrep_on(thd), now that
      the condition has been merged to the definition of the macro
      wsrep_on().
      edd38b50
    • Marko Mäkelä's avatar
      MDEV-22203: WSREP_ON is unnecessarily expensive WITH_WSREP=OFF · 2c39f69d
      Marko Mäkelä authored
      If the server is compiled WITH_WSREP=OFF, we should avoid evaluating
      conditions on a global variable that is constant.
      
      WSREP_ON_: Renamed from WSREP_ON. Defined only WITH_WSREP=ON.
      
      WSREP_ON: Defined as unlikely(WSREP_ON_).
      
      wsrep_on(): Defined as WSREP_ON && wsrep_service->wsrep_on_func().
      
      The reason why we have wsrep_on() at all is that the macro WSREP(thd)
      depends on the definition of THD, and that is intentionally an opaque
      data type for InnoDB. So, we cannot avoid invoking wsrep_on(), but
      we can evaluate the less expensive condition WSREP_ON before calling
      the function.
      2c39f69d
    • Jan Lindström's avatar
      MDEV-22203: WSREP_ON is unnecessarily expensive to evaluate · 93475aff
      Jan Lindström authored
      Replaced WSREP_ON macro by single global variable WSREP_ON
      that is then updated at server statup and on wsrep_on and
      wsrep_provider update functions.
      93475aff
  4. 23 Apr, 2020 2 commits
  5. 22 Apr, 2020 7 commits
  6. 21 Apr, 2020 1 commit
    • Vlad Lesin's avatar
      MDEV-19347: Mariabackup does not honor ignore_db_dirs from server · 0efe1971
      Vlad Lesin authored
      config.
      
      The solution is to read the system variable value on startup and to fill
      databases_exclude_hash.
      
      xb_load_list_string() became non-static and was reformatted. The system
      variable value is read and processed in get_mysql_vars(), which was also
      reformatted.
      0efe1971
  7. 20 Apr, 2020 1 commit
  8. 18 Apr, 2020 7 commits
    • Monty's avatar
      Fixed multi_update_debug.test · 36bddacf
      Monty authored
      Backported fix from 10.5
      36bddacf
    • Monty's avatar
      Don't write warning about uninitialized mutex if there is a memory leak · 0bcb65d3
      Monty authored
      Part of:
      MDEV-21056 Assertion `global_status_var.global_memory_used == 0'
      failed upon shutdown after query with DEFAULT on a geometry
      field
      
      Fixed by changing the ASSERT for memory leaks to a printf() on
      stderr. This has needed as all mutex in mysys has been deleted and we
      can't call functions like my_open() anymore.
      
      Also added printing of leaks if safemalloc is used (like we do in 10.5)
      0bcb65d3
    • Monty's avatar
      Fixed memory leaks in resolve_stack_dump · 749b9887
      Monty authored
      - Remove memory leaks reported by safemalloc
      - Changed that all 0x strings are converted. This is needed
        to easily be able to resolve safemalloc backtraces
      749b9887
    • Monty's avatar
      Fixed memory leak with DEFAULT(f) on Geometry field · 48eda61c
      Monty authored
      MDEV-21056  Assertion `global_status_var.global_memory_used == 0'
      failed upon shutdown after query with DEFAULT on a geometry
      field
      48eda61c
    • Monty's avatar
      Fixed memory leak with fulltext indexes · a6d32976
      Monty authored
      MDEV-22275 Assertion `global_status_var.global_memory_used == 0'
      failed, bytes lost, or LeakSanitizer: detected memory leaks
      after using temporary table with fulltext key
      
      This affected MyISAM and Aria temporary tables
      a6d32976
    • Monty's avatar
      Fixed compiler warning in mysqltest.cc · 70bb6141
      Monty authored
      70bb6141
    • Teemu Ollakka's avatar
      MDEV-21025 Server crashes on START TRANSACTION after INSERT IGNORE (#1489) · 632b1deb
      Teemu Ollakka authored
      If a transaction had no effect due to INSERT IGNORE and a new
      transaction was started with START TRANSACTION without committing
      the previous one, the server crashed on assertion when starting
      a new wsrep transaction.
      
      As a fix, refined the condition to do wsrep_commit_empty() at the end
      of the ha_commit_trans().
      632b1deb
  9. 17 Apr, 2020 6 commits
    • Marko Mäkelä's avatar
      Fix GCC 10 -Woverflow · ad4b7056
      Marko Mäkelä authored
      maria_page_crc_check_index(): Do not attempt to convert
      HA_ERR_WRONG_CRC (176) to my_bool (char).
      On platforms where char is signed, the 176 will be converted to -80.
      
      It turns out that the callers only care whether the result is zero.
      Let us return 1 in this case, like we do in all other error cases.
      ad4b7056
    • Marko Mäkelä's avatar
      MDEV-22271 Excessive stack memory usage due to WSREP_LOG · 7198c6ab
      Marko Mäkelä authored
      Several tests that involve stored procedures fail on 10.4 kvm-asan
      (clang 10) due to stack overrun. The main contributor to this stack
      overrun is mysql_execute_command(), which is invoked recursively
      during stored procedure execution.
      
      Rebuilding with cmake -DWITH_WSREP=OFF shrunk the stack frame size
      of mysql_execute_command() by more than 10 kilobytes in a
      WITH_ASAN=ON, CMAKE_BUILD_TYPE=Debug build. The culprit
      turned out to be the macro WSREP_LOG, which is allocating a
      separate 1KiB buffer for every occurrence.
      
      We replace the macro with a function, so that the stack will be
      allocated only when the function is actually invoked. In this way,
      no stack space will be wasted by default (when WSREP and Galera
      are disabled).
      
      This backports commit b6c5657e
      from MariaDB 10.3.1.
      
      Without ASAN, compilers can be smarter and optimize the stack usage.
      The original commit message mentions that 1KiB was saved on GCC 5.4,
      and 4KiB on Mac OS X Lion, which presumably uses a clang-based compiler.
      7198c6ab
    • Kentoku SHIBA's avatar
      MDEV-20502 Queries against spider tables return wrong values for columns... · 68ceb4b4
      Kentoku SHIBA authored
      MDEV-20502 Queries against spider tables return wrong values for columns following constant declarations.
      
      When executing a query like "select id, 0 as const, val from ...", there are 3 columns(items) in Query->select at handlerton->create_group_by(). After that, MariaDB makes a temporary table with 2 columns. The skipped items are const item, so fixing Spider to skip const items for items at Query->select.
      68ceb4b4
    • Kentoku SHIBA's avatar
      00db9c6b
    • Teemu Ollakka's avatar
      MDEV-22271 Excessive stack memory usage due to WSREP_LOG · c79051e5
      Teemu Ollakka authored
      - Made WSREP_LOG a function and moved the body out of header.
      - Reduced the stack allocated buffer size and implemented
        reprint into dynamically allocated buffer if stack buffer is not
        large enough to hold the message.
      c79051e5
    • Kentoku SHIBA's avatar
      Merge commit '619a2ccd' into 10.3 · 0155d644
      Kentoku SHIBA authored
      0155d644
  10. 16 Apr, 2020 4 commits
  11. 15 Apr, 2020 1 commit