1. 11 Nov, 2020 2 commits
    • Marko Mäkelä's avatar
      MDEV-24156 trx_undo_left() fails to prevent overflow · 7b7e5922
      Marko Mäkelä authored
      trx_undo_left(): Return 0 in case of an overflow, instead of
      returning a negative number interpreted as a large positive number.
      Also, add debug assertions to check that the pointer is within
      the page area. This should allow us to catch bugs like
      MDEV-24096 easier in the future.
      7b7e5922
    • Marko Mäkelä's avatar
      MDEV-24182 ibuf_merge_or_delete_for_page() contains dead code · bd528b0c
      Marko Mäkelä authored
      The function ibuf_merge_or_delete_for_page() was always being
      invoked with update_ibuf_bitmap=true ever since
      commit cd623508
      fixed up something after MDEV-9566.
      
      Furthermore, the parameter page_size is never being passed as a
      null pointer, and therefore it should better be a reference to
      a constant object.
      bd528b0c
  2. 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
  3. 09 Nov, 2020 1 commit
    • 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
  4. 04 Nov, 2020 1 commit
  5. 03 Nov, 2020 3 commits
  6. 02 Nov, 2020 4 commits
  7. 01 Nov, 2020 1 commit
  8. 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
  9. 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
  10. 29 Oct, 2020 10 commits
  11. 28 Oct, 2020 5 commits
  12. 27 Oct, 2020 4 commits
    • Vladislav Vaintroub's avatar
      MDEV-24040 Named pipe permission issue · 3829b408
      Vladislav Vaintroub authored
      Tighten access control - deny FILE_CREATE_PIPE_INSTANCE permission to
      everyone except current user (the one that runs mysqld)
      3829b408
    • Eugene Kosov's avatar
      MDEV-23991 dict_table_stats_lock() has unnecessarily long scope · afc9d00c
      Eugene Kosov authored
      Patch removes dict_index_t::stats_latch. Table/index statistics now
      protected with dict_sys->mutex. That way statistics computation can
      happen in parallel in several threads and dict_sys->mutex will be locked
      only for a short period of time.
      
      This patch is a joint work with Marko Mäkelä
      
      dict_index_t::lock: make mutable which allows to pass const pointer
      when only lock is touched in an object
      
      btr_height_get()
      btr_get_size(): make index argument const for better type safety
      
      btr_estimate_number_of_different_key_vals(): now returns computed values
      instead of setting fields in dict_index_t directly
      
      remove everything related to dict_index_t::stats_latch
      
      dict_stats_index_set_n_diff(): now returns computed values instead
      of setting fields in dict_index_t directly
      
      dict_stats_analyze_index():  now returns computed values instead
      of setting fields in dict_index_t directly
      
      Reviewed by: Marko Mäkelä
      afc9d00c
    • Marko Mäkelä's avatar
      MDEV-16952 Introduce SET GLOBAL innodb_max_purge_lag_wait · 42e1815a
      Marko Mäkelä authored
      Let us introduce a dummy variable innodb_max_purge_lag_wait
      for waiting that the InnoDB history list length is below
      the user-specified limit. Specifically,
      
      SET GLOBAL innodb_max_purge_lag_wait=0;
      
      should wait for all history to be purged. This could be useful
      when upgrading from an older version to MariaDB 10.3 or later,
      to avoid hitting MDEV-15912.
      
      Note: the history cannot be purged if there exist transactions
      that may see old versions.
      
      Reviewed by: Vladislav Vaintroub
      42e1815a
    • Alexey Botchkov's avatar
      MDEV-22524 SIGABRT in safe_mutex_unlock with · 8761571a
      Alexey Botchkov authored
      session_track_system_variables and max_relay_log_size.
      
      lock LOCK_global_system_variables around the get_one_variable() call
      in the Session_sysvars_tracker::store_variable().
      8761571a