1. 29 Apr, 2020 2 commits
  2. 28 Apr, 2020 4 commits
    • Marko Mäkelä's avatar
      InnoDB 5.6.48 · 713e427b
      Marko Mäkelä authored
      713e427b
    • Marko Mäkelä's avatar
      MDEV-22393 Corruption for SET GLOBAL innodb_ string variables · 70418074
      Marko Mäkelä authored
      Several MYSQL_SYSVAR_STR parameters that employ both a validate
      function callback fail to copy the string for saving the
      validated value. The affected variables include the following:
      
      innodb_ft_aux_table
      innodb_ft_server_stopword_table
      innodb_ft_user_stopword_table
      innodb_buffer_pool_filename
      
      The test case is an enhanced version of
      mysql/mysql-server@0b0c30641fd66336e87394ac28587e40864f8af9
      and the code changes are inspired by their fixes.
      
      We are also importing and adjusting the test innodb_fts.stopword
      to get coverage for the variable innodb_ft_user_stopword_table.
      
      buf_dump(), buf_load(): Protect srv_buf_dump_filename with
      LOCK_global_system_variables.
      
      fts_load_user_stopword(): Minor cleanup
      
      fts_load_stopword(): Remove the parameter global_stopword_table.
      
      innobase_fts_load_stopword(): Protect innodb_server_stopword_table
      against concurrent SET GLOBAL.
      70418074
    • Marko Mäkelä's avatar
      MDEV-22392 Race condition on SET GLOBAL innodb_buffer_pool_evict='uncompressed' · cce1b6e2
      Marko Mäkelä authored
      innodb_buffer_pool_evict_uncompressed(): Restart the loop when
      prev_block might not enjoy mutex protection.
      
      This is based on
      mysql/mysql-server@eccaecac070b6747ecf14d6b9150791f8c3e8f6d
      cce1b6e2
    • Marko Mäkelä's avatar
      Remove a duplicated copyright message · cf64d27b
      Marko Mäkelä authored
      cf64d27b
  3. 27 Apr, 2020 8 commits
    • Marko Mäkelä's avatar
      XtraDB 5.6.47-87.0 · d956175d
      Marko Mäkelä authored
      The only change is a change of the version number.
      As noted in commit 02af6278
      there were no changes to InnoDB between MySQL 5.6.46 and 5.6.47
      either.
      d956175d
    • Marko Mäkelä's avatar
      MDEV-7962 wsrep_on() takes 0.14% in OLTP RO · edbdfc2f
      Marko Mäkelä authored
      The function wsrep_on() was being called rather frequently
      in InnoDB and XtraDB. Let us cache it in trx_t and invoke
      trx_t::is_wsrep() instead.
      
      innobase_trx_init(): Cache trx->wsrep = wsrep_on(thd).
      
      ha_innobase::write_row(): Replace many repeated calls to current_thd,
      and test the cheapest condition first.
      edbdfc2f
    • Sergei Golubchik's avatar
      MDEV-22271 Excessive stack memory usage due to WSREP_LOG · dd4124c2
      Sergei Golubchik authored
      fix embedded innodb_plugin tests
      
      followup for 7198c6ab
      dd4124c2
    • Sergei Golubchik's avatar
      MDEV-22078 MariaDB-compat missing from MariaDB 10.4 CentOS 8 Yum Repo · f462fbac
      Sergei Golubchik authored
      Backport INSALL_SYMLINK cmake macro from 10.3.
      It'll make libmysqlclient_r.* symlinks to link to the actual
      shared library file, not to another symlink.
      
      As a bonus it'll fix cmake warning about deprecated LOCATION property
      f462fbac
    • Marko Mäkelä's avatar
      MDEV-22203: WSREP_ON is unnecessarily expensive to evaluate · 6be05ceb
      Marko Mäkelä authored
      This is a backport of the applicable part of
      commit 93475aff and
      commit 2c39f69d
      from 10.4.
      
      Before 10.4 and Galera 4, WSREP_ON is a macro that points to
      a global Boolean variable, so it is not that expensive to
      evaluate, but we will add an unlikely() hint around it.
      
      WSREP_ON_NEW: Remove. This macro was introduced in
      commit c863159c
      when reverting WSREP_ON to its previous definition.
      
      We replace some use of WSREP_ON with WSREP(thd), like it was done
      in 93475aff. Note: the macro
      WSREP() in 10.1 is equivalent to WSREP_NNULL() in 10.4.
      
      Item_func_rand::seed_random(): Avoid invoking current_thd
      when WSREP is not enabled.
      6be05ceb
    • Marko Mäkelä's avatar
      Fix clang 10 warnings · 758fbec6
      Marko Mäkelä authored
      _ma_fetch_keypage(): Correct an assertion that used to always hold.
      Thanks to clang -Wint-in-bool-context for flagging this.
      
      double_to_datetime_with_warn(): Suppress -Wimplicit-int-float-conversion
      by adding a cast. LONGLONG_MAX converted to double will actually be
      LONGLONG_MAX+1.
      758fbec6
    • Marko Mäkelä's avatar
      6a3fc110
    • Marko Mäkelä's avatar
      MDEV-22271: Follow-up fix of --embedded · d28ee189
      Marko Mäkelä authored
      Since commit 7198c6ab
      the ./mtr --embedded tests would fail to start innodb_plugin
      because of an undefined reference to the symbol wsrep_log().
      
      Let us define a stub for that function. The embedded server
      is never built WITH_WSREP, but there are no separate storage
      engine builds for the embedded server. Hence, by default,
      the dynamic InnoDB storage engine plugin would be built WITH_WSREP
      and it would fail to load into the embedded server library due to
      a reference to the undefined symbol.
      d28ee189
  4. 23 Apr, 2020 1 commit
  5. 17 Apr, 2020 2 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
  6. 16 Apr, 2020 2 commits
  7. 15 Apr, 2020 2 commits
    • Marko Mäkelä's avatar
      MDEV-21549 IMPORT TABLESPACE fails to adjust all tablespace ID in root pages · f8166a05
      Marko Mäkelä authored
      After MDEV-12353, the consistency check that I originally added for
      commit 1b9fe0bb
      (InnoDB Plugin for MySQL 5.1) started randomly failing.
      
      It turns out that the IMPORT TABLESPACE code was always incorrect:
      it did not update the (redundantly stored) tablespace ID
      in index tree root pages. It only does that for page headers
      and BLOB pointers.
      
      PageConverter::update_index_page(): Update the tablespace ID
      in the BTR_SEG_TOP and BTR_SEG_LEAF of index root pages.
      
      This is a backport of commit b8b3edff.
      f8166a05
    • Marko Mäkelä's avatar
      mbstream: Remove duplicate definition of datasink_buffer · a215e213
      Marko Mäkelä authored
      For some reason, when mbstream is compiled with GCC 10,
      ld will fail to link it due to a multiple definition of
      datasink_buffer. The code appears to have been like that
      since the very beginning.
      
      Let us remove the duplicate dummy definition.
      a215e213
  8. 14 Apr, 2020 2 commits
  9. 13 Apr, 2020 4 commits
  10. 08 Apr, 2020 2 commits
    • Varun Gupta's avatar
      MDEV-22191: Range access is not picked when index_merge_sort_union is turned off · c1394ab6
      Varun Gupta authored
      When index_merge_sort_union is turned off only ror scans were considered for range
      scans, which is wrong.
      To fix the problem ensure both ror scans and non ror scans are considered for range
      access
      c1394ab6
    • Julius Goryavsky's avatar
      MDEV-20676: systemd script not working · c8e0c524
      Julius Goryavsky authored
      When trying to start mariadb via systemctl, WSREP failed
      to start mysqld for wsrep recovery, because the binary
      "galera-recovery" is neither searching the mysqld in the
      same folder as the binary itself nor in the path variable
      but instead expects the root to be /usr/local/mysql.
      
      This fix changes the current directory to the desired
      directory before starting mysqld.
      c8e0c524
  11. 07 Apr, 2020 1 commit
    • Rasmus Johansson's avatar
      MDEV-22176 Add JUnit support to MTR to generate XML test result · 5720db2b
      Rasmus Johansson authored
      A new parameter has been added called xml-report, with which the
      filename of the XML file is given to which the XML result is
      written. There is also xml-package for adding a package value in
      the XML output. Example usage:
      ./mysql-test-run.pl main.events_bugs innodb.count_distinct
      main.explain_json innodb.file_format_defaults json.json_no_table
      --suite=main,innodb,json --force --xml-report=build123456789.xml
      --xml-package=simpletestrun
      5720db2b
  12. 05 Apr, 2020 1 commit
  13. 03 Apr, 2020 1 commit
    • Hannu Hartikainen's avatar
      my.cnf: mention that config files must be *.cnf · 64b70b09
      Hannu Hartikainen authored
      It took me a long time to debug why my configs were not being loaded,
      and judging from online discussions I'm not the only one. Make the
      comment in the default my.cnf a bit more helpful.
      
      The !includedir directive is implemented in mysys/my_default.c.
      
      - f_extensions[] is a list of file extensions. It includes .ini and .cnf
        on Windows, and only .cnf on all other platforms.
      - search_default_file_with_ext() contains the !includedir directive. It
        filters files in the directory to those matching f_extensions[].
      
      This file should only be applicable on Unix-like platforms, so only
      files with the .cnf extension are read.
      
      Closes #1485
      64b70b09
  14. 01 Apr, 2020 2 commits
    • Marko Mäkelä's avatar
      MDEV-19740: Have MYSQL_MAINTAINER_MODE only enable -Werror · 31eaa202
      Marko Mäkelä authored
      Let us enable all GCC and clang warnings independently of the
      MYSQL_MAINTAINER_MODE setting for both Debug and RelWithDebInfo
      builds, and have MYSQL_MAINTAINER_MODE only enable -Werror.
      
      The default setting of MYSQL_MAINTAINER_MODE=AUTO will continue
      to apply the -Werror only to CMAKE_BUILD_TYPE=Debug. To build
      a debug version without -Werror, MYSQL_MAINTAINER_MODE=OFF can
      be used.
      31eaa202
    • Marko Mäkelä's avatar
      Merge 5.5 into 10.1 · f813131c
      Marko Mäkelä authored
      f813131c
  15. 25 Mar, 2020 2 commits
  16. 24 Mar, 2020 1 commit
  17. 23 Mar, 2020 1 commit
  18. 20 Mar, 2020 1 commit
    • Alexander Barkov's avatar
      MDEV-21977 main.func_math fails due to undefined behaviour · 328edf85
      Alexander Barkov authored
      The problem happened in these line:
      
      uval0= (ulonglong) (val0_negative ? -val0 : val0);
      uval1= (ulonglong) (val1_negative ? -val1 : val1);
      
      return check_integer_overflow(val0_negative ? -(longlong) res : res,
                                    !val0_negative);
      
      when unary minus was performed on -9223372036854775808.
      This behavior is undefined in C/C++.
      328edf85
  19. 15 Mar, 2020 1 commit
    • Igor Babaev's avatar
      MDEV-10466 Server crashed in SEL_ARG::store_min() with extended_keys=on · 407b0a6a
      Igor Babaev authored
      This bug could manifest itself in a very rare cases when the optimizer
      chose an execution plan by which a joined table was accessed by a table
      scan and the optimizer was checking whether ranges checked for each record
      could improve this plan. In such cases the optimizer evaluates range
      conditions over a table that depend on other tables. For such conditions
      the constructed SEL_ARG trees are marked as MAYBE_KEY. If a SEL_ARG object
      constructed for a sargable condition marked as RANGE_KEY had the same
      first key part as a MAYBE_KEY SEL_ARG object and the key_and() function
      was called for this pair of SEL_ARG objects then an invalid SEL_ARG
      object could be constructed that ultimately could lead to a crash before
      the execution phase.
      407b0a6a