1. 30 Aug, 2022 8 commits
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.7 · b86be02e
      Marko Mäkelä authored
      b86be02e
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · f410974f
      Marko Mäkelä authored
      f410974f
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 29fa9bce
      Marko Mäkelä authored
      29fa9bce
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 7e574eb5
      Marko Mäkelä authored
      7e574eb5
    • Marko Mäkelä's avatar
      MDEV-13888: innodb_fts.innodb_fts_plugin failed · 57739ae9
      Marko Mäkelä authored
      Add ORDER BY to make the test deterministic.
      
      Add FLUSH TABLES to avoid crash recovery warnings about the table
      mysql.plugin. This tends to occur on Valgrind, where the server
      shutdown could presumably time out, resulting in a forced kill.
      57739ae9
    • Marko Mäkelä's avatar
      MDEV-29409 Buffer overflow in my_wc_mb_filename() on RENAME TABLE · 422f3204
      Marko Mäkelä authored
      dict_table_rename_in_cache(), dict_table_get_highest_foreign_id():
      Reserve sufficient space for the fkid[] buffer, and ensure that the
      fkid[] will be NUL-terminated.
      
      The fkid[] must accommodate both the database name (which is already
      encoded in my_charset_filename) and the constraint name
      (which must be converted to my_charset_filename) so that we can check
      if it is in the format databasename/tablename_ibfk_1 (all encoded in
      my_charset_filename).
      422f3204
    • anson1014's avatar
      Ensure that source files contain only valid UTF8 encodings (#2188) · 966d22b7
      anson1014 authored
      Modern software (including text editors, static analysis software,
      and web-based code review interfaces) often requires source code files
      to be interpretable via a consistent character encoding, with UTF-8 or
      ASCII (a strict subset of UTF-8) as the default. Several of the MariaDB
      source files contain bytes that are not valid in either the UTF-8 or
      ASCII encodings, but instead represent strings encoded in the
      ISO-8859-1/Latin-1 or ISO-8859-2/Latin-2 encodings.
      
      These inconsistent encodings may prevent software from correctly
      presenting or processing such files. Converting all source files to
      valid UTF8 characters will ensure correct handling.
      
      Comments written in Czech were replaced with lightly-corrected
      translations from Google Translate. Additionally, comments describing
      the proper handling of special characters were changed so that the
      comments are now purely UTF8.
      
      All new code of the whole pull request, including one or several files
      that are either new files or modified ones, are contributed under the
      BSD-new license. I am contributing on behalf of my employer
      Amazon Web Services, Inc.
      Co-authored-by: default avatarAndrew Hutchings <andrew@linuxjedi.co.uk>
      966d22b7
    • Marko Mäkelä's avatar
      MDEV-29258 Failing assertion for name length on RENAME TABLE · b2609038
      Marko Mäkelä authored
      trx_undo_page_report_rename(): Use the correct maximum length of
      a table name. Both the database name and the table name can be up to
      NAME_CHAR_LEN (64 characters) times 5 bytes per character in the
      my_charset_filename encoding. They are not encoded in UTF-8!
      
      fil_op_write_log(): Reserve the correct amount of log buffer for
      a rename operation. The file name will be appended by
      mlog_catenate_string().
      
      rename_file_ext(): Reserve a large enough buffer for the file names.
      b2609038
  2. 28 Aug, 2022 1 commit
  3. 26 Aug, 2022 5 commits
    • Alexander Barkov's avatar
    • tmokmss's avatar
      MDEV-18873 Server crashes in Compare_identifiers::operator or in... · 827b049e
      tmokmss authored
      MDEV-18873 Server crashes in Compare_identifiers::operator or in my_strcasecmp_utf8 upon ADD PERIOD IF NOT EXISTS with empty name
      
      empty identifier specified as `` ends up with a NULL LEX_CSTRING::str in lexer.
      This is not considered correct in upper layers, for example in Compare_identifiers::operator().
      Empty column name is usually avoided by a check_column_name() call while parsing,
      and period name matches the column name completely.
      Hence, this fix uses the mentioned call for verification, too.
      827b049e
    • Marko Mäkelä's avatar
      MDEV-29383 Assertion mysql_mutex_assert_owner(&log_sys.flush_order_mutex) failed in mtr_t::commit() · 0fbcb0a2
      Marko Mäkelä authored
      In commit 0b47c126 (MDEV-13542)
      a few calls to mtr_t::memo_push() were moved before a write latch
      on the page was acquired. This introduced a race condition:
      
      1. is_block_dirtied() returned false to mtr_t::memo_push()
      2. buf_page_t::write_complete() was executed, the block marked clean,
      and a page latch released
      3. The page latch was acquired by the caller of mtr_t::memo_push(),
      and mtr_t::m_made_dirty was not set even though the block is in
      a clean state.
      
      The impact of this race condition is that crash recovery and backups
      may fail.
      
      btr_cur_latch_leaves(), btr_store_big_rec_extern_fields(),
      btr_free_externally_stored_field(), trx_purge_free_segment():
      Acquire the page latch before invoking mtr_t::memo_push().
      This fixes the regression caused by MDEV-13542.
      
      Side note: It would suffice to set mtr_t::m_made_dirty at the time
      we set the MTR_MEMO_MODIFY flag for a block. Currently that flag is
      unnecessarily set if a mini-transaction acquires a page latch on
      a page that is in a clean state, and will not actually modify the block.
      This may cause unnecessary acquisitions of log_sys.flush_order_mutex
      on mtr_t::commit().
      
      mtr_t::free(): If the block had been exclusively latched in this
      mini-transaction, set the m_made_dirty flag so that the flush order mutex
      will be acquired during mtr_t::commit(). This should have been part of
      commit 4179f93d (MDEV-18976).
      It was necessary to change mtr_t::free() so that
      WriteOPT_PAGE_CHECKSUM::operator() would be able to avoid writing
      checksums for freed pages.
      0fbcb0a2
    • Daniel Black's avatar
      mariabackup: remove MySQL wording · 0324bde8
      Daniel Black authored
      0324bde8
    • Daniel Black's avatar
      MDEV-23607 MariaBackup - align required GRANTS to cmd options · 79b58f1c
      Daniel Black authored
      Since the 10.5 split of the privileges, the required GRANTs
      for various mariabackup operations has changed.
      
      In the addition of tests, a number of mappings where incorrect:
      
      The option --lock-ddl-per-table didn't require connection admin.
      
      The option --safe-slave-backup requires SLAVE MONITOR even without
      the --no-lock option.
      79b58f1c
  4. 25 Aug, 2022 6 commits
    • Igor Babaev's avatar
      MDEV-29350 Crash when IN predicand is used in eliminated GROUP BY clause · 94e3f02d
      Igor Babaev authored
      This bug affected some queries with an IN/ALL/ANY predicand or an EXISTS
      predicate whose subquery contained a GROUP BY clause that could be
      eliminated. If this clause used a IN/ALL/ANY predicand whose left operand
      was a single-value subquery then execution of the query caused a crash of
      the server after invokation of remove_redundant_subquery_clauses().
      The crash was caused by an attempt to exclude the unit for the single-value
      subquery from the query tree for the second time by the function
      Item_subselect::eliminate_subselect_processor().
      
      This bug had been masked by the bug MDEV-28617 until a fix for the latter
      that properly excluded units was pushed into 10.3.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      94e3f02d
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 76bb671e
      Marko Mäkelä authored
      76bb671e
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 9929301e
      Marko Mäkelä authored
      9929301e
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 851058a3
      Marko Mäkelä authored
      851058a3
    • Marko Mäkelä's avatar
      MDEV-29384 Hangs caused by innodb_adaptive_hash_index=ON · d1a80c42
      Marko Mäkelä authored
      buf_defer_drop_ahi(): Remove. Ever since
      commit c7f8cfc9 (MDEV-27700)
      it is safe to invoke btr_search_drop_page_hash_index(block, true)
      to remove an orphan adaptive hash index.
      
      Any attempt to upgrade page latches is prone to deadlocks. Recently,
      we observed a few hangs that involved nothing more than a small table
      consisting of one clustered index page, one secondary index page and
      some undo pages.
      d1a80c42
    • Sergei Golubchik's avatar
      update a global_suppressions() list · 2f6a7280
      Sergei Golubchik authored
      followup for "remove invalid options from warning messages"
      2f6a7280
  5. 24 Aug, 2022 8 commits
  6. 23 Aug, 2022 9 commits
  7. 22 Aug, 2022 3 commits
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 3b656ac8
      Marko Mäkelä authored
      3b656ac8
    • Brandon Nesterenko's avatar
      MDEV-28294: set default role bypasses Replicate_Wild_Ignore_Table: mysql.% · 8963d64e
      Brandon Nesterenko authored
      Problem:
      ========
      When replicating SET DEFAULT ROLE, the pre-update check (i.e. that
      in set_var_default_role::check()) tries to validate the existence of
      the given rules/user even when the targeted tables are ignored. When
      previously issued CREATE USER/ROLE commands are ignored by the
      replica because of the replication filtering rules, this results in
      an error because the targeted data does not exist.
      
      Solution:
      ========
      Before checking that the given roles/user exist of a SET DEFAULT
      ROLE command, first ensure that the mysql.user and
      mysql.roles_mapping tables are not excluded by replication filters.
      
      Reviewed By:
      ============
      Andrei Elkin <andrei.elkin@mariadb.com>
      Sergei Golubchik <serg@mariadb.com>
      8963d64e
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · b68ae6dc
      Marko Mäkelä authored
      b68ae6dc