1. 11 Mar, 2021 3 commits
    • Marko Mäkelä's avatar
      MDEV-25105 Remove innodb_checksum_algorithm values none,innodb,... · 7a4fbb55
      Marko Mäkelä authored
      Historically, InnoDB supported a buggy page checksum algorithm that did not
      compute a checksum over the full page. Later, well before MySQL 4.1
      introduced .ibd files and the innodb_file_per_table option, the algorithm
      was corrected and the first 4 bytes of each page were redefined to be
      a checksum.
      
      The original checksum was so slow that an option to disable page checksum
      was introduced for benchmarketing purposes.
      
      The Intel Nehalem microarchitecture introduced the SSE4.2 instruction set
      extension, which includes instructions for faster computation of CRC-32C.
      In MySQL 5.6 (and MariaDB 10.0), innodb_checksum_algorithm=crc32 was
      implemented to make of that. As that option was changed to be the default
      in MySQL 5.7, a bug was found on big-endian platforms and some work-around
      code was added to weaken that checksum further. MariaDB disables that
      work-around by default since MDEV-17958.
      
      Later, SIMD-accelerated CRC-32C has been implemented in MariaDB for POWER
      and ARM and also for IA-32/AMD64, making use of carry-less multiplication
      where available.
      
      Long story short, innodb_checksum_algorithm=crc32 is faster and more secure
      than the pre-MySQL 5.6 checksum, called innodb_checksum_algorithm=innodb.
      It should have removed any need to use innodb_checksum_algorithm=none.
      
      The setting innodb_checksum_algorithm=crc32 is the default in
      MySQL 5.7 and MariaDB Server 10.2, 10.3, 10.4. In MariaDB 10.5,
      MDEV-19534 made innodb_checksum_algorithm=full_crc32 the default.
      It is even faster and more secure.
      
      The default settings in MariaDB do allow old data files to be read,
      no matter if a worse checksum algorithm had been used.
      (Unfortunately, before innodb_checksum_algorithm=full_crc32,
      the data files did not identify which checksum algorithm is being used.)
      
      The non-default settings innodb_checksum_algorithm=strict_crc32 or
      innodb_checksum_algorithm=strict_full_crc32 would only allow CRC-32C
      checksums. The incompatibility with old data files is why they are
      not the default.
      
      The newest server not to support innodb_checksum_algorithm=crc32
      were MySQL 5.5 and MariaDB 5.5. Both have reached their end of life.
      A valid reason for using innodb_checksum_algorithm=innodb could have
      been the ability to downgrade. If it is really needed, data files
      can be converted with an older version of the innochecksum utility.
      
      Because there is no good reason to allow data files to be written
      with insecure checksums, we will reject those option values:
      
          innodb_checksum_algorithm=none
          innodb_checksum_algorithm=innodb
          innodb_checksum_algorithm=strict_none
          innodb_checksum_algorithm=strict_innodb
      
      Furthermore, the following innochecksum options will be removed,
      because only strict crc32 will be supported:
      
          innochecksum --strict-check=crc32
          innochecksum -C crc32
          innochecksum --write=crc32
          innochecksum -w crc32
      
      If a user wishes to convert a data file to use a different checksum
      (so that it might be used with the no-longer-supported
      MySQL 5.5 or MariaDB 5.5, which do not support IMPORT TABLESPACE
      nor system tablespace format changes that were made in MariaDB 10.3),
      then the innochecksum tool from MariaDB 10.2, 10.3, 10.4, 10.5 or
      MySQL 5.7 can be used.
      
      Reviewed by: Thirunarayanan Balathandayuthapani
      7a4fbb55
    • Otto Kekäläinen's avatar
      Deb: Rename mariadb.init 10.5->10.6 on 10.6 branch · 0da6d67a
      Otto Kekäläinen authored
      Also fix a few other occurences of 10.5 -> 10.6.
      
      This commit complements commit 4501c7e8
      that seem to have missed these changes.
      0da6d67a
    • Hollow Man's avatar
      Fix several typos in sql/item_jsonfunc.cc · f386fdd7
      Hollow Man authored
      insencitive -> insensitive
      excapint -> excipient
      Jost -> Just
      belive -> believe
      f386fdd7
  2. 09 Mar, 2021 2 commits
    • Marko Mäkelä's avatar
      MDEV-24671 fixup: Merge lock_sys_t::wait_pending into wait_count · bda8a2a6
      Marko Mäkelä authored
      The maximum number of concurrently waiting transactions is one less
      than the maximum number of concurrent transactions.
      
      A 45-bit cumulative counter of lock waits will support more than
      one million lock waits per second for a year.
      bda8a2a6
    • Marko Mäkelä's avatar
      MDEV-25085: Simplify instrumentation for LRU eviction · 78284a4c
      Marko Mäkelä authored
      Let us add the status variable innodb_buffer_pool_pages_LRU_freed
      to monitor the number of pages that were freed by a buffer pool LRU
      eviction scan, without flushing.
      
      Also, let us simplify the monitor interface:
      MONITOR_LRU_BATCH_FLUSH_COUNT, MONITOR_LRU_BATCH_FLUSH_PAGES,
      MONITOR_LRU_BATCH_EVICT_COUNT, MONITOR_LRU_BATCH_EVICT_PAGES:
      Remove.
      
      MONITOR_LRU_BATCH_FLUSH_TOTAL_PAGE: Track buf_lru_flush_page_count
      (innodb_buffer_pool_pages_LRU_flushed).
      
      MONITOR_LRU_BATCH_EVICT_TOTAL_PAGE: Track buf_lru_freed_page_count
      (buffer_pool_pages_LRU_freed).
      
      Reviewed by: Vladislav Vaintroub
      78284a4c
  3. 08 Mar, 2021 9 commits
  4. 05 Mar, 2021 12 commits
  5. 04 Mar, 2021 9 commits
    • Daniel Black's avatar
      mtr: perfschema.socket_{connect,instances_func} "Expect X" · 1e7fed72
      Daniel Black authored
      Match test output with what it is testing.
      1e7fed72
    • Daniel Black's avatar
      d2dce1c9
    • Rinat Ibragimov's avatar
      MDEV-6536: make --bind=hostname to listen on both IPv6 and IPv4 addresses · b3abcf80
      Rinat Ibragimov authored
      Binding to a hostname now makes MariaDB server to listen on all addresses
      that hostname resolves to.
      
      Rebased to 10.6 by Daniel Black
      
      Closes: #1668
      b3abcf80
    • Varun Gupta's avatar
      MDEV-7317: Make an index ignorable to the optimizer · f691d986
      Varun Gupta authored
      This feature adds the functionality of ignorability for indexes.
      Indexes are not ignored be default.
      
      To control index ignorability explicitly for a new index,
      use IGNORE or NOT IGNORE as part of the index definition for
      CREATE TABLE, CREATE INDEX, or ALTER TABLE.
      
      Primary keys (explicit or implicit) cannot be made ignorable.
      
      The table INFORMATION_SCHEMA.STATISTICS get a new column named IGNORED that
      would store whether an index needs to be ignored or not.
      f691d986
    • Marko Mäkelä's avatar
      fixup 58b56f14: Remove dead code · 7759991a
      Marko Mäkelä authored
      row_prebuilt_t::m_no_prefetch: Remove (it was always false).
      row_prebuilt_t::m_read_virtual_key: Remove (it was always false).
      
      Only ha_innopart ever set these fields.
      7759991a
    • Marko Mäkelä's avatar
      MDEV-25051 Race condition between persistent statistics and RENAME TABLE or TRUNCATE · 978e48c9
      Marko Mäkelä authored
      innobase_rename_table(): Invoke dict_stats_wait_bg_to_stop_using_table()
      to ensure that dict_stats_update() cannot be accessing the table name
      that we will be modifying. If we are executing RENAME rather than TRUNCATE,
      reset the flag at the end so that persistent statistics can be calculated
      again.
      
      The race condition was encountered with ASAN and rr.
      Sorry, there is no test case, like there is for nothing related to
      dict_stats_wait_bg_to_stop_using_table(). The entire code is an ugly
      work-around for the failure of dict_stats_process_entry_from_recalc_pool()
      to acquire MDL.
      
      Note: It appears that an ALTER TABLE that is not rebuilding the table
      will fail to reset the flag that blocks the processing of statistics.
      978e48c9
    • Vicențiu Ciorbaru's avatar
      Merge branch '10.2' into 10.3 · e9b8b76f
      Vicențiu Ciorbaru authored
      e9b8b76f
    • Vicențiu Ciorbaru's avatar
      MDEV-25032: Window functions without column references get removed from ORDER BY · 5da6ffe2
      Vicențiu Ciorbaru authored
      row_number() over () window function can be used without any column in the OVER
      clause. Additionally, the item doesn't reference any tables, as it's not
      effectively referencing any table. Rather it is specifically built based
      on the end temporary table used for window function computation.
      
      This caused remove_const function to wrongly drop it from the ORDER
      list. Effectively, we shouldn't be dropping any window function from the
      ORDER clause, so adjust remove_const to account for that.
      
      Reviewed by: Sergei Petrunia sergey@mariadb.com
      5da6ffe2
    • Igor Babaev's avatar
      MDEV-22786 Crashes with nested table value constructors · 08d8bce5
      Igor Babaev authored
      The bug caused crashes of the server when processing queries with nested
      table value constructors (TVC) . It happened because the grammar rules to
      parse TVC used the same global lists for both nested TVC and nesting TVC.
      As a result invalid select trees were constructed for queries with nested
      TVC and this led to crashes at the prepare stage.
      This patch provides its own lists structures for each TVC nest level.
      
      Besides the patch fixes a bug in the function wrap_tvc() that missed
      inheritance of the SELECT_LEX::exclude_from_table_unique_test for
      selects that wrapped TVCs. This inheritance is critical for specifications
      of derived tables that employ nested TVCs.
      
      Approved by dmitry.shulga@mariadb.com
      08d8bce5
  6. 03 Mar, 2021 5 commits