1. 07 Sep, 2022 5 commits
  2. 06 Sep, 2022 6 commits
  3. 05 Sep, 2022 5 commits
    • Daniel Black's avatar
      MDEV-29443: prevent uring access to galera sst /notify scripts · fd8dbe0d
      Daniel Black authored
      The resources like uring in MariaDB aren't intended for spawned
      processes so we restrict access using the io_uring_ring_dontfork
      liburing library call.
      fd8dbe0d
    • Jan Lindström's avatar
      Merge 10.5 into 10.6 · 9fefd440
      Jan Lindström authored
      9fefd440
    • Jan Lindström's avatar
      Merge 10.4 into 10.5 · ba987a46
      Jan Lindström authored
      ba987a46
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 3c7887a8
      Marko Mäkelä authored
      3c7887a8
    • Marko Mäkelä's avatar
      MDEV-29438 Recovery or backup of instant ALTER TABLE is incorrect · 244fdc43
      Marko Mäkelä authored
      This bug was found in MariaDB Server 10.6 thanks to the
      OPT_PAGE_CHECKSUM record that was implemented
      in commit 4179f93d for catching
      this type of recovery failures.
      
      page_cur_insert_rec_low(): If the previous record is the page infimum,
      correctly limit the end of the record. We do not want to copy data from
      the header of the page supremum. This omission caused the incorrect
      recovery of DB_TRX_ID in an instant ALTER TABLE metadata record, because
      part of the DB_TRX_ID was incorrectly copied from the n_owned of the
      page supremum, which in recovery would be updated after the copying,
      but in normal operation would already have been updated at the time the
      common prefix was being determined.
      
      log_phys_t::apply(): If a data page is found to be corrupted, do not
      flag the log corrupted but instead return a new status APPLIED_CORRUPTED
      so that the caller may discard all log for this page. We do not want
      the recovery of unrelated pages to fail in recv_recover_page().
      
      No test case is included, because the known test case would only work
      in 10.6, and even after this fix, it would trigger another bug in
      instant ALTER TABLE crash recovery.
      244fdc43
  4. 03 Sep, 2022 2 commits
    • Andrei's avatar
      MDEV-28827 Minor unsafe statement warning message improvement · f501f815
      Andrei authored
      The replication unsafe warning's pattern gets corrected in the
      punctuation part.
      f501f815
    • Brandon Nesterenko's avatar
      MDEV-28530: Revoking privileges from a non-existing user on a master breaks... · 47812017
      Brandon Nesterenko authored
      MDEV-28530: Revoking privileges from a non-existing user on a master breaks replication on the slave in the presence of replication filters
      
      Problem:
      ========
      Replication can break while applying a query log event if its
      respective command errors on the primary, but is ignored by the
      replication filter within Grant_tables on the replica. The bug
      reported by MDEV-28530 shows this with REVOKE ALL PRIVILEGES using a
      non-existent user. The primary will binlog the REVOKE command with
      an error code, and the replica will think the command executed with
      success because the replication filter will ignore the command while
      accessing the Grant_tables classes. When the replica performs an
      error check, it sees the difference between the error codes, and
      replication breaks.
      
      Solution:
      ========
      If the replication filter check done by Grant_tables logic ignores
      the tables, reset thd->slave_expected_error to 0 so that
      Query_log_event::do_apply_event() can be made aware that the
      underlying query was ignored when it compares errors.
      
      Note that this bug also effects DROP USER if not all users exist
      in the provided list, and the patch fixes and tests this case.
      
      Reviewed By:
      ============
      andrei.elkin@mariadb.com
      47812017
  5. 02 Sep, 2022 1 commit
    • anson1014's avatar
      Remove unused French translations in Connect engine (#2252) · 84813c39
      anson1014 authored
      These files are currently not being used nor compiled in MariaDB. The
      use of large lists of 'case' statements in these source files are also
      not a great way to represent translated strings. This git history can
      be referred to when a better translation interface can be implemented
      in the future.
      
      Therefore, these files can be removed to cleanup the MariaDB codebase.
      
      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.
      84813c39
  6. 01 Sep, 2022 3 commits
  7. 31 Aug, 2022 9 commits
    • Marko Mäkelä's avatar
      MDEV-27983: InnoDB hangs after loading a ROW_FORMAT=COMPRESSED page · 92032499
      Marko Mäkelä authored
      If multiple threads invoke buf_page_get_low() on a ROW_FORMAT=COMPRESSED
      page that does not reside in the buffer pool, then one of the threads
      will end up acquiring an exclusive page latch (the "if" statement
      right before the new wait_for_unzip: label) and other threads will
      end up waiting for a shared latch while holding a buffer-fix.
      The exclusive latch holder would then wait for the buffer-fixes to
      be released while the buffer-fix holders are waiting for the shared latch.
      
      buf_page_get_low(): Prevent the hang that was introduced
      in commit 9436c778 (MDEV-27058),
      by releasing the buffer-fix, sleeping some time, and retrying the
      page lookup.
      92032499
    • Marko Mäkelä's avatar
      MDEV-29374 InnoDB recovery fails with "Data structure corruption" · bdf62ece
      Marko Mäkelä authored
      recv_sys_t::free_corrupted_page(): Identify the corrupted page in
      an error or warning message.
      
      buf_page_free(): Just in case, register the page as modified.
      This should already have been done in mtr_t::free() as part of
      fseg_free_page_low().
      
      mtr_t::memo_push(): Simplify a condition, so that when invoked
      with MTR_MEMO_PAGE_X_MODIFY, we will do the right thing.
      
      fseg_free_page_low(): Remove an accidentally added return statement
      that prevented mtr_t::free() from being called. This fixes a regression
      that was introduced in
      commit 0b47c126 (MDEV-13542).
      bdf62ece
    • Marko Mäkelä's avatar
      4f2dc716
    • Daniele Sciascia's avatar
      Reduce compilation dependencies on wsrep_mysqld.h · 2917bd0d
      Daniele Sciascia authored
      Making changes to wsrep_mysqld.h causes large parts of server code to
      be recompiled. The reason is that wsrep_mysqld.h is included by
      sql_class.h, even tough very little of wsrep_mysqld.h is needed in
      sql_class.h. This commit introduces a new header file, wsrep_on.h,
      which is meant to be included from sql_class.h, and contains only
      macros and variable declarations used to determine whether wsrep is
      enabled.
      Also, header wsrep.h should only contain definitions that are also
      used outside of sql/. Therefore, move WSREP_TO_ISOLATION* and
      WSREP_SYNC_WAIT macros to wsrep_mysqld.h.
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      2917bd0d
    • Daniel Black's avatar
      c487eeed
    • Daniel Black's avatar
      MDEV-29418 linux uuid implementation returning non-hwaddr based suffix · 5cbc5dbb
      Daniel Black authored
      Because of a define error the wrong value was being returned.
      
      Regression in MDEV-28243
      
      Fixes: 607f9874679c3e4ef7edcd2c9d80120051af73cc
      5cbc5dbb
    • Daniel Black's avatar
      Merge branch 10.4 into 10.5 · 43037a5a
      Daniel Black authored
      43037a5a
    • Daniel Black's avatar
      Merge 10.3 into 10.4 · cf1a944f
      Daniel Black authored
      cf1a944f
    • Daniel Black's avatar
      MDEV-28592 disks plugin - getmntinfo (BSD) & getmntent (AIX) · 129616c7
      Daniel Black authored
      Thanks to references from Brad Smith, BSDs use getmntinfo as
      a system call for mounted filesystems.
      
      Most BSDs return statfs structures, (and we use OSX's statfs64),
      but NetBSD uses a statvfs structure.
      
      Simplify Linux getmntent_r to just use getmntent.
      
      AIX uses getmntent.
      
      An attempt at writing Solaris compatibility with
      a small bit of HPUX compatibility was made based on man page
      entries only. Fixes welcome.
      
      statvfs structures now use f_bsize for consistency with statfs
      
      Test case adjusted as PATH_MAX is OS defined (e.g. 1023 on AIX)
      
      Fixes: 0ee5cf83
      
      also fixes:
      
      MDEV-27818: Disk plugin does not show zpool mounted devices
      
      This is because zpool mounted point don't begin with /.
      
      Due to the proliferation of multiple filesystem types since this
      was written, we restrict the entries listed in the disks plugin
      to excude:
      * read only mount points (no point monitoring, and
        includes squash, snaps, sysfs, procfs, cgroups...)
      * mount points that aren't directories (excludes /etc/hostname and
        similar mounts in containers). (getmntent (Linux/AIX) only)
      * exclude systems where there is no capacity listed (excludes various
        virtual filesystem types).
      
      Reviewer: Sergei Golubchik
      129616c7
  8. 30 Aug, 2022 7 commits
    • 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
  9. 28 Aug, 2022 1 commit
  10. 26 Aug, 2022 1 commit
    • 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