1. 09 Feb, 2021 1 commit
  2. 08 Feb, 2021 4 commits
    • Monty's avatar
      MDEV-24087 s3.replication_partition fails in buildbot wiht replication failure · ffc5d064
      Monty authored
      A few of the failures was because of missing sync_slave_to_master in
      the test suite.
      
      However, the biggest reason for most faulures was that in case of
      ALTER PARTITION the master writes the query to the binary log before
      it has updated the .frm and .par files. This causes a problem for an
      S3 slave as it will start execute the ALTER PARTITION but get old .frm and
      .par files from S3 which causes "open table" to fail, either with an error
      or in some case with a crash.
      Fixed
      ffc5d064
    • Monty's avatar
      Make maria_data_root const char* · bd5ac038
      Monty authored
      This allow one to remove some casts like:
      maria_data_root= (char *)".";
      
      It also removes warnings from icc.
      bd5ac038
    • Monty's avatar
      Added 'const' to arguments in get_one_option and find_typeset() · 5d6ad2ad
      Monty authored
      One should not change the program arguments!
      This change also reduces warnings from the icc compiler.
      
      Almost all changes are just syntax changes (adding const to
      'get_one_option function' declarations).
      
      Other changes:
      - Added a few cast of 'argument' from 'const char*' to 'char *'. This
        was mainly in calls to 'external' functions we don't have control of.
      - Ensure that all reset of 'password command line argument' are similar.
        (In almost all cases it was just adding a comment and a cast)
      - In mysqlbinlog.cc and mysqld.cc there was a few cases that changed
        the command line argument. These places where changed to instead allocate
        the option in a MEM_ROOT to avoid changing the argument. Some of this
        code was changed to ensure that different programs did parsing the
        same way. Added a test case for the changes in mysqlbinlog.cc
      - Changed a few variables that took their value from command line options
        from 'char *' to 'const char *'.
      5d6ad2ad
    • Monty's avatar
      Ensure that mysqlbinlog frees all memory at exit · e30a3048
      Monty authored
      e30a3048
  3. 07 Feb, 2021 2 commits
  4. 03 Feb, 2021 1 commit
    • Monty's avatar
      MDEV-24750 Various corruptions caused by Aria subsystem... · eacefbca
      Monty authored
      The test case was setting aria_sort_buffer_size to MAX_ULONGLONG-1
      which was not handled gracefully by my_malloc() or safemalloc().
      Fixed by ensuring that the malloc functions returns 0 if the size
      is too big.
      I also added some protection to Aria repair:
      - Limit sort_buffer_size to 16G (after that a bigger sort buffer will
        not help that much anyway)
      - Limit sort_buffer_size also according to sort file size. This will
        help by not allocating less memory if someone sets the buffer size too
        high.
      eacefbca
  5. 02 Feb, 2021 1 commit
  6. 01 Feb, 2021 3 commits
  7. 30 Jan, 2021 2 commits
  8. 29 Jan, 2021 5 commits
    • Sergei Petrunia's avatar
      MDEV-24739: Assertion `root->weight >= ...' failed in SEL_ARG::tree_delete · 73c43ee9
      Sergei Petrunia authored
      Also update the SEL_ARG graph weight in:
      - sel_add()
      - SEL_ARG::clone()
      
      Make key_{and,or}_with_limit() to also verify weight for the arguments
      (There is no single point to verify SEL_ARG graphs constructed from
      conditions that are not AND-OR formulas, so we hope that those are
      connected with AND/OR and do it here).
      73c43ee9
    • Marko Mäkelä's avatar
      MDEV-24661: Remove the test innodb.innodb_wl6326_big · a70a47f2
      Marko Mäkelä authored
      The purpose of the test was to ensure that the SX (update) mode of
      index tree and buffer page latches are being used.
      
      The test has become unstable, possibly due to changes related to
      buf_pool.mutex and buf_pool.page_hash, or to the use of MDL in the
      purge of transaction history.
      
      In 10.6, the test depends on instrumentation that was refactored
      or removed in MDEV-24142.
      
      The use of different latching modes can better be indirectly observed
      through high-concurrency benchmarks. For MDEV-14637, a performance test
      was conducted where the finer-grained latching and
      BTR_CUR_FINE_HISTORY_LENGTH were removed. It caused a 20% performance
      regression for UPDATE and somewhat smaller for INSERT.
      
      Any new problem with latching granularity should be easily caught by
      performance testing, or by stress tests with Random Query Generator.
      a70a47f2
    • Vladislav Vaintroub's avatar
      MDEV-24685 - remove IO thread states output from SHOW ENGINE INNODB STATUS · d8373fea
      Vladislav Vaintroub authored
      There are no IO threads anymore.
      d8373fea
    • Sergei Petrunia's avatar
      MDEV-9750: Quick memory exhaustion with 'extended_keys=on' ... · c3672038
      Sergei Petrunia authored
      (Variant #5, full patch, for 10.5)
      
      Do not produce SEL_ARG graphs that would yield huge numbers of ranges.
      Introduce a concept of SEL_ARG graph's "weight". If we are about to
      produce a graph whose "weight" exceeds the limit, remove the parts
      of SEL_ARG graph that represent the biggest key parts. Do so until
      the graph's is within the limit.
      
      Includes
      - debug code to verify SEL_ARG graph weight
      - A user-visible @@optimizer_max_sel_arg_weight to control the optimization
      - Logging the optimization into the optimizer trace.
      c3672038
    • sjaakola's avatar
      MDEV-24721 galera.mysql-wsrep-bugs-607 test failure · a2eb974b
      sjaakola authored
      The implementation for MDEV-17048 apperas to be direct copy from mysql version.
      The group commit works differently in mariadb and the assert in wsrep_unregister_from_group_commit() is too strict.
      
      The reason is that in: Wsrep_high_priority_service::log_dummy_write_set(), the transaction will undergo full rollback:
          {
            cs.before_rollback();
            cs.after_rollback();
          }
      
      After that, the client's transaction state is set to be:  wsrep::transaction::s_aborted.
      The execution then continues execution by:
      
      ...
       wsrep_register_for_group_commit(m_thd);
      ...
       wsrep_unregister_from_group_commit(m_thd);
      
      The bogus assert in wsrep_unregister_from_group_commit() allows only transactions states of :s_ordered_commit or s_aborting.
      
      As the fix, I brought back the same assert as is present in MariaDB 10.4 version.
      a2eb974b
  9. 28 Jan, 2021 5 commits
    • Anel Husakovic's avatar
      MDEV-24093: Detect during mysql_upgrade if type_mysql_json.so is needed and load it · 85130c5a
      Anel Husakovic authored
      a. The change makes `mariadb-upgrade` detect if `MYSQL_JSON` data type is needed.
      b. Install the data type if it's not installed.
      c. Uninstalls the data type once finished.
      d. Create `.opt` and `.inc` files `have_type_mysql_json` and adapt the
      tests
      
      Reviewed by: vicentiu@mariadb.org
      85130c5a
    • Marko Mäkelä's avatar
      MDEV-24564 Statistics are lost after ALTER TABLE · 6d1f1b61
      Marko Mäkelä authored
      Ever since commit 007f68c3,
      ALTER TABLE no longer invokes handler::open() after
      handler::commit_inplace_alter_table().
      
      ha_innobase::reload_statistics(): Reload or recompute statistics
      after ALTER TABLE.
      
      innodb_notify_tabledef_changed(): A new function to invoke
      ha_innobase::reload_statistics().
      
      handlerton::notify_tabledef_changed(): Add the parameter handler*
      so that ha_innobase::reload_statistics() can be invoked.
      
      ha_partition::notify_tabledef_changed(),
      partition_notify_tabledef_changed(): Pass through the call
      to any partitions or subpartitions.
      
      This is based on code that was supplied by Monty.
      6d1f1b61
    • Vlad Lesin's avatar
      744e9752
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-24695 Encryption modifies a freed page · 6e80a34d
      Thirunarayanan Balathandayuthapani authored
      During recovery, InnoDB fails if it tries to apply a FREE_PAGE
      and WRITE record to the page. InnoDB encryption thread accesses
      the freed page and writes redo log for it.
      
      This is similar to commit deadec4e (MDEV-24569)
      InnoDB is missing buf_page_free() while freeing the segment.
      To avoid accessing of freed page in buffer pool, InnoDB should
      mark the pages as FREED while freeing the segment. Also to
      avoid reading of freed page, InnoDB should check the
      allocation bitmap page.
      
      fseg_free_step(): Mark the page in buffer pool as FREED
      
      fseg_free_step_not_header(): Mark the page in buffer pool as FREED
      
      buf_dump(): Ignore the freed pages while dumping the buffer pool content
      
      fil_crypt_get_page_throttle_func(): Skip the rotation for FREED page
      to avoid the assert failure during recovery
      
      fil_crypt_rotate_page(): Skip the rotation for the freed page
      
      Reviewed-by: Marko Mäkelä
      6e80a34d
    • Marko Mäkelä's avatar
      c6308355
  10. 27 Jan, 2021 3 commits
  11. 26 Jan, 2021 1 commit
  12. 25 Jan, 2021 8 commits
  13. 23 Jan, 2021 2 commits
    • Marko Mäkelä's avatar
      MDEV-24661: Disable an unstable test · 5adcb2e7
      Marko Mäkelä authored
      5adcb2e7
    • Marko Mäkelä's avatar
      MDEV-24659 Assertion !fsp_is_system_temporary(bpage->id().space()) failed in... · 84b8f529
      Marko Mäkelä authored
      MDEV-24659 Assertion !fsp_is_system_temporary(bpage->id().space()) failed in buf_flush_relocate_on_flush_list()
      
      When commit 5eb53955 (MDEV-12227)
      removed the pages of temporary tables from the buf_pool.flush_list,
      an adjustment to the buffer pool resizing was forgotten.
      
      buf_pool_t::realloc(): Do not invoke buf_flush_relocate_on_flush_list()
      for pages that belong to the temporary tablespace. Also, deduplicate
      some code at the end.
      
      buf_page_t::set_corrupt_id(): Tolerate oldest_modification()==1
      (the dummy value) for temporary tablespace pages. The revised
      buf_pool_t::realloc() may invoke this on dirty temporary tablespace pages.
      84b8f529
  14. 22 Jan, 2021 2 commits