1. 12 Feb, 2020 4 commits
    • Marko Mäkelä's avatar
      MDEV-15058: Deprecate and ignore innodb_buffer_pool_instances · 1a6f708e
      Marko Mäkelä authored
      Our benchmarking efforts indicate that the reasons for splitting the
      buf_pool in commit c18084f7
      have mostly gone away, possibly as a result of
      mysql/mysql-server@ce6109ebfdedfdf185e391a0c97dc6d33867ed78
      or similar work.
      
      Only in one write-heavy benchmark where the working set size is
      ten times the buffer pool size, the buf_pool->mutex would be
      less contended with 4 buffer pool instances than with 1 instance,
      in buf_page_io_complete(). That contention could be alleviated
      further by making more use of std::atomic and by splitting
      buf_pool_t::mutex further (MDEV-15053).
      
      We will deprecate and ignore the following parameters:
      
      	innodb_buffer_pool_instances
      	innodb_page_cleaners
      
      There will be only one buffer pool and one page cleaner task.
      
      In a number of INFORMATION_SCHEMA views, columns that indicated
      the buffer pool instance will be removed:
      
      	information_schema.innodb_buffer_page.pool_id
      	information_schema.innodb_buffer_page_lru.pool_id
      	information_schema.innodb_buffer_pool_stats.pool_id
      	information_schema.innodb_cmpmem.buffer_pool_instance
      	information_schema.innodb_cmpmem_reset.buffer_pool_instance
      1a6f708e
    • Marko Mäkelä's avatar
      0448c614
    • Marko Mäkelä's avatar
      2a6fa1c4
    • Oleksandr Byelkin's avatar
      Merge branch '10.4' into 10.5 · 4b087e17
      Oleksandr Byelkin authored
      4b087e17
  2. 11 Feb, 2020 7 commits
    • Marko Mäkelä's avatar
      MDEV-19747: Deprecate and ignore innodb_log_optimize_ddl · fc2f2fa8
      Marko Mäkelä authored
      During native table rebuild or index creation, InnoDB used to skip
      redo logging and write MLOG_INDEX_LOAD records to inform crash recovery
      and Mariabackup of the gaps in redo log. This is fragile and prohibits
      some optimizations, such as skipping the doublewrite buffer for
      newly (re)initialized pages (MDEV-19738).
      
      row_merge_write_redo(): Remove. We do not write MLOG_INDEX_LOAD
      records any more. Instead, we write full redo log.
      
      FlushObserver: Remove.
      
      fseg_free_page_func(): Remove the parameter log. Redo logging
      cannot be disabled.
      
      fil_space_t::redo_skipped_count: Remove.
      
      We cannot remove buf_block_t::skip_flush_check, because PageBulk
      will temporarily generate invalid B-tree pages in the buffer pool.
      fc2f2fa8
    • Marko Mäkelä's avatar
      MDEV-17491 micro optimize page_id_t further · 8ccb3caa
      Marko Mäkelä authored
      Let us define page_id_t as a thin wrapper of uint64_t so that
      the comparison operators can be simplified. This is a follow-up
      to the original commit 14be8143.
      
      The comparison operator for recv_sys.pages.emplace() turned out to be
      a busy spot in a recovery benchmark. That data structure was introduced
      in MDEV-19586 in commit 177a571e.
      8ccb3caa
    • Marko Mäkelä's avatar
      MDEV-21351: Fix a performance regression · f3dac591
      Marko Mäkelä authored
      The linear scan of recv_sys_t::blocks() in recv_sys_t::free()
      turns out to dominate the execution time in crash recovery.
      Let us scan the much shorter buf_pool->chunks lists instead.
      f3dac591
    • Oleksandr Byelkin's avatar
      Merge branch '10.3' into 10.4 · 646d1ec8
      Oleksandr Byelkin authored
      646d1ec8
    • Jan Lindström's avatar
      MDEV-20051: Add new mode to wsrep_OSU_method in which Galera checks storage... · e6a50e41
      Jan Lindström authored
      MDEV-20051: Add new mode to wsrep_OSU_method in which Galera checks storage engine of the effected table
      
      Introduced a new wsrep_strict_ddl configuration variable in which
      Galera checks storage engine of the effected table. If table is not
      InnoDB (only storage engine currently fully supporting Galera
      replication) DDL-statement will return error code:
      
      ER_GALERA_REPLICATION_NOT_SUPPORTED
             eng "DDL-statement is forbidden as table storage engine does not support Galera replication"
      
      However, when wsrep_replicate_myisam=ON we allow DDL-statements to
      MyISAM tables. If effected table is allowed storage engine Galera
      will run normal TOI.
      
      This new setting should be for now set globally on all
      nodes in a cluster. When this setting is set following DDL-clauses
      accessing tables not supporting Galera replication are refused:
      
      * CREATE TABLE (e.g. CREATE TABLE t1(a int) engine=Aria
      * ALTER TABLE
      * TRUNCATE TABLE
      * CREATE VIEW
      * CREATE TRIGGER
      * CREATE INDEX
      * DROP INDEX
      * RENAME TABLE
      * DROP TABLE
      
      Statements on PROCEDURE, EVENT, FUNCTION are allowed as effected
      tables are known only at execution. Furthermore, USER, ROLE, SERVER,
      DATABASE statements are also allowed as they do not really have
      effected table.
      e6a50e41
    • Igor Babaev's avatar
      MDEV-21683 Server crashes in get_quick_keys with not_null_range_scan · 41541a7c
      Igor Babaev authored
      ANding of the range built from inferred NOT NULL conditions and the range
      built from other conditions used in WHERE/ON clauses may produce an
      IMPOSSIBLE range. The code of MDEV-15777 did not take into account this
      possibility.
      41541a7c
    • Alexander Barkov's avatar
      83e75b39
  3. 10 Feb, 2020 6 commits
  4. 09 Feb, 2020 4 commits
  5. 08 Feb, 2020 7 commits
    • Alexander Barkov's avatar
      MDEV-21689 Add Sql_cmd for GRANT/REVOKE statements · 77c63823
      Alexander Barkov authored
      Rewriting GRANT/REVOKE grammar to use more bison stack and use Sql_cmd_ style
      
      1. Removing a few members from LEX:
         - uint grant, grant_to_col, which_columns
         - List<LEX_COLUMN> columns
         - bool all_privileges
      2. Adding classes Grand_object_name, Lex_grant_object_name
      3. Adding classes Grand_privilege, Lex_grand_privilege
      4. Adding struct Lex_column_list_privilege_st, class Lex_column_list_privilege
      5. Rewriting the GRANT/REVOKE grammar to use new classes and pass them through
         bison stack (rather than directly access LEX members)
      6. Adding classes Sql_cmd_grant* and Sql_cmd_revoke*,
         changing GRANT/REVOKE to use LEX::m_sql_cmd.
      7. Adding the "sp_handler" grammar rule and removing some duplicate grammar
         for GRANT/REVOKE for different kinds of SP objects.
      8. Adding a new rule comma_separated_ident_list, reusing it in:
         - with_column_list
         - colum_list_privilege
      77c63823
    • Marko Mäkelä's avatar
      Remove unused SRV_MASTER_PURGE_INTERVAL · e568dc97
      Marko Mäkelä authored
      The symbol SRV_MASTER_PURGE_INTERVAL became unused in
      mysql/mysql-server@42f36919584e82c621dbec1e69fd05ab023c54c6
      when separate purge threads were introduced in MySQL 5.6.5.
      e568dc97
    • Marko Mäkelä's avatar
      Cleanup: Aligned InnoDB index page header access · 06b0623a
      Marko Mäkelä authored
      ut_align_down(): Preserve the const qualifier. Use C++ casts.
      
      ha_delete_hash_node(): Correct an assertion expression.
      
      fil_page_get_type(): Perform an assumed-aligned read.
      
      page_align(): Preserve the const qualifier. Assume (some) alignment.
      
      page_get_max_trx_id(): Check the index page type.
      
      page_header_get_field(): Perform an assumed-aligned read.
      
      page_get_autoinc(): Perform an assumed-aligned read.
      
      page_dir_get_nth_slot(): Perform an assumed-aligned read.
      Preserve the const qualifier.
      06b0623a
    • Marko Mäkelä's avatar
      MDEV-21351: Allocate aligned memory · c5856b0a
      Marko Mäkelä authored
      recv_sys_t::ALIGNMENT: The recv_sys_t::alloc() alignment
      c5856b0a
    • Marko Mäkelä's avatar
      6eed99f1
    • Martin Liska's avatar
      MDEV-21248: Prevent optimizing out buf argument in check_stack_overrun. · 35c27785
      Martin Liska authored
      When using LTO, one can see optimization of stack variables that
      are passed to check_stack_overrun as argument buf. That prevents
      proper stack overrun detection.
      35c27785
    • Igor Babaev's avatar
      MDEV-21614 Wrong query results with optimizer_switch="split_materialized=on" · 8d7462ec
      Igor Babaev authored
      Do not materialize a semi-join nest if it contains a materialized derived
      table /view that potentially can be subject to the split optimization.
      Splitting of materialization of such nest would help, but currently there
      is no code to support this technique.
      8d7462ec
  6. 07 Feb, 2020 10 commits
  7. 06 Feb, 2020 2 commits
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-21563 FTS thread aborts during shutdown · 280bf178
      Thirunarayanan Balathandayuthapani authored
      Problem:
      =======
      After discarding the table, fts_optimize_thread aborts during shutdown.
      InnoDB fails to remove the table from fts_optimize_wq and it leads to
      the fts_optimize_thread to lookup for the auxiliary table and fails.
      
      Fix:
      ====
      While discarding the fts table, remove the table from fts_optimize_wq.
      280bf178
    • Marko Mäkelä's avatar
      MDEV-18582: Fix a race condition · cd3bdc09
      Marko Mäkelä authored
      srv_export_innodb_status(): While gathering
      innodb_mem_adaptive_hash, acquire btr_search_latches[i]
      in order to prevent a race condition with buffer pool resizing.
      cd3bdc09