1. 02 Aug, 2022 2 commits
  2. 01 Aug, 2022 5 commits
    • Julius Goryavsky's avatar
      MDEV-28758: Mariabackup copies binary logs to backup directory · 7fb1f919
      Julius Goryavsky authored
      This commit restores defaults and functionality regarding binlogs
      to the way it was prior to MDEV-27524. The mariabackup utility no
      longer saves binlogs files as part of a backup without the --galera-info
      option. However, since we use --galera-info during SST, the behavior
      of mariabackup changes and, in combination with GTIDs support enabled,
      mariabackup transfers one (most recent) binlog file obtained after
      FLUSH BINARY LOGS. In other cases, binlogs are not transferred during
      SST in mariabackup mode. As for SST in the rsync mode, it works the
      same way as before MDEV-27524 - by default it transfers one last
      binlog file.
      
      The --sst-max-binlogs option for mariabackup and the sst_max_binlogs
      parameter in the [sst] / server sections are no longer supported for
      SST via mariabackup.
      7fb1f919
    • Sergei Golubchik's avatar
      only copy buffer pool dump in SST galera mode · 5b415437
      Sergei Golubchik authored
      and then only into the default name, so that the joiner could find it
      5b415437
    • Sergei Golubchik's avatar
      5197519f
    • Marko Mäkelä's avatar
      MDEV-14804 innodb.update_time occasionally fails · 6a3fbfdb
      Marko Mäkelä authored
      Let simplify the test.
      The update_time is stored in the table metadata (dict_table_t);
      it has nothing to do with buffer pool page eviction or replacement.
      6a3fbfdb
    • Sergei Golubchik's avatar
      in INFORMATION_SCHEMA.ALL_PLUGINS match installed plugins better · 40c2460d
      Sergei Golubchik authored
      look for an installed plugin with the same name _and the same type_
      (in case there are many plugins with the same name and different type,
      which is, technically, possible for built-in plugins).
      40c2460d
  3. 29 Jul, 2022 5 commits
  4. 28 Jul, 2022 1 commit
  5. 27 Jul, 2022 4 commits
    • Oleksandr Byelkin's avatar
      MDEV-26647 (simple_password_check) Include password validation plugin... · 15a2ff12
      Oleksandr Byelkin authored
      MDEV-26647 (simple_password_check) Include password validation plugin information in the error message if the SQL statement is not satisfied password policy
      
      Make the plugin reporting cause of the error.
      15a2ff12
    • Oleksandr Byelkin's avatar
      MDEV-26647 (plugin name) Include password validation plugin information in the... · cc6bba00
      Oleksandr Byelkin authored
      MDEV-26647 (plugin name) Include password validation plugin information in the error message if the SQL statement is not satisfied password policy
      
      Add plugin name to the error message.
      cc6bba00
    • Marko Mäkelä's avatar
      MDEV-28495 InnoDB corruption due to lack of file locking · 0ee1082b
      Marko Mäkelä authored
      Starting with commit da094188 (MDEV-24393),
      MariaDB will no longer acquire advisory file locks on InnoDB data
      files by default, because it would create a large number of
      entries in Linux /proc/locks.
      
      The motivation for acquiring the file locks is to prevent accidental
      concurrent startup of multiple server processes on the same data files.
      Such mistake still turns out to be relatively common, based on
      corruption bug reports from the community.
      
      To prevent corruption due to concurrent startup attempts, the
      Aria storage engine would unconditionally acquire an advisory lock
      on one of its log files.
      
      Solution: InnoDB will always lock its system tablespace files.
      (Ever since commit 685d958e
      the InnoDB log file will not necessarily be open while the
      server is running, because it can be accessed via memory-mapped I/O.)
      
      If more protection is desired, then the option --external-locking
      can be used.
      
      The mandatory advisory lock also fixes intermittent failures of
      some crash recovery tests. It turns out that when the mtr test harness
      kills and restarts the server, it will not actually ensure that the
      old process has terminated before starting the new one.
      0ee1082b
    • Igor Babaev's avatar
      MDEV-29139 Crash when using ANY predicand with redundant subquery in GROUP BY clause · bd935a41
      Igor Babaev authored
      This bug could cause a crash of the server when executing queries containing
      ANY/ALL predicands with redundant subqueries in GROUP BY clauses.
      These subqueries are eliminated by remove_redundant_subquery_clause()
      together with elimination of GROUP BY list containing these subqueries.
      However the references to the elements of the GROUP BY remained in the
      JOIN::all_fields list of the right operand of of the ALL/ANY predicand.
      Later these references confused make_aggr_tables_info() when forming
      proper execution structures after ALL/ANY predicands had been replaced
      with expressions containing MIN/MAX set functions.
      The patch just removes these references from JOIN::all_fields list used
      by the subquery of the ALL/ANY predicand when its GROUP BY clause is
      eliminated.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      bd935a41
  6. 26 Jul, 2022 10 commits
  7. 25 Jul, 2022 5 commits
    • Brandon Nesterenko's avatar
      MDEV-21087/MDEV-21433: ER_SLAVE_INCIDENT arrives at slave without failure specifics · 555c12a5
      Brandon Nesterenko authored
      Problem:
      =======
      
      This patch addresses two issues:
      
       1. An incident event can be incorrectly reported for transactions
      which are rolled back successfully. That is, an incident event
      should only be generated for failed “non-transactional transactions”
      (i.e., those which modify non-transactional tables) because they
      cannot be rolled back.
      
       2. When the mariadb slave (error) stops at receiving the incident
      event there's no description of what led to it. Neither in the event
      nor in the master's error log.
      
      Solution:
      ========
      
      Before reporting an incident event for a transaction, first validate
      that it is “non-transactional” (i.e. cannot be safely rolled back).
      To determine if a transaction is non-transactional,
        lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE)
      is used because it is set previously in
      THD::decide_logging_format().
      
      Additionally, when an incident event is written, write an error
      message to the server’s error log to indicate the underlying issue.
      
      Reviewed by:
      ===========
      Andrei Elkin <andrei.elkin@mariadb.com>
      555c12a5
    • Rucha Deodhar's avatar
      This commit is a fixup for MDEV-28762 · 46ff6608
      Rucha Deodhar authored
      46ff6608
    • Marko Mäkelä's avatar
      Fix DBUG_ENTER/return mismatch · f1c8749f
      Marko Mäkelä authored
      Spotted by Thirunarayanan Balathandayuthapani.
      f1c8749f
    • Marko Mäkelä's avatar
      MDEV-28980 InnoDB: Failing assertion: len <= MAX_TABLE_NAME_LEN · 8aa37c26
      Marko Mäkelä authored
      dict_load_foreigns(): Use a correctly sized buffer for the maximum-length
      SYS_FOREIGN.ID. In case of overflow, do not crash the server but instead
      return DB_CORRUPTION.
      8aa37c26
    • Brad Smith's avatar
  8. 23 Jul, 2022 1 commit
  9. 22 Jul, 2022 3 commits
  10. 21 Jul, 2022 1 commit
  11. 20 Jul, 2022 1 commit
  12. 18 Jul, 2022 2 commits
    • Aleksey Midenkov's avatar
      MDEV-29023 MTR hangs after multiple failures · 18488048
      Aleksey Midenkov authored
      Passing $opt_parallel as $childs is wrong: child can be killed before
      it connects and you will never decrement $childs for this.
      
      Another problem is (and that is the cause of this bug): child can be
      killed and never close server socket. This can happen f.ex. after
      unmaskable KILL signal. In such case the socket is closed by reaping
      the child but that never happens inside reading the socket loop in
      run_test_server().
      
      The proper design is the waitless reap of children inside the socket
      loop and if there is no more children we finish the socket loop. Since
      there is Windows variation where we don't control the children via
      waitpid(), all the clients must normally close the socket and only
      this can finish the socket loop. For Unix variation we reckon that
      case as all children closed the socket but not all yet died and for
      that we do final waiting waitpid() (was done before the patch as
      well).
      
      To be more complete, we now handle 3 end-of-game scenarios in Unix:
      
         1. all children closed socket, all children died: everything is
            handled by the socket loop;
      
         2. all children closed socket, not all yet died: we wait for alive
            children to die after exiting the socket loop;
      
         3. not all children closed socket, all children died: everything is
            handled by the socket loop.
      
      For Windows end-of-game scenario is only one:
      
         All children close the socket.
      18488048
    • Aleksey Midenkov's avatar
      MDEV-29023 waitpid() cleanup · 7ca5c7d8
      Aleksey Midenkov authored
      The case for "Unknown process $ret_pid exited" is never known to be
      valid. Such state is not documented for waitpid().
      7ca5c7d8