1. 09 Jul, 2021 2 commits
    • Anel Husakovic's avatar
      Update description of mariadb-common package · 85063aeb
      Anel Husakovic authored
      - Commit https://github.com/mariadb/server/commit/438ed0408c69
      introduced `mariadb-common` package and added description. Example in
      description is confusing since files referred to are not installed and
      not related/owned by the `mariadb-common` package.
      - Patch is updating real file/directory description section pointing to
      the real examples owned by the package.
      - Example:
      ```
      mariadb-client-10.3				install
      mariadb-client-core-10.3			install
      mariadb-common					install
      mariadb-server					install
      mariadb-server-10.3				install
      mariadb-server-core-10.3			install
      
      /.
      /etc
      /etc/mysql
      /etc/mysql/mariadb.cnf
      /etc/mysql/mariadb.conf.d
      /usr
      /usr/share
      /usr/share/doc
      /usr/share/doc/mariadb-common
      /usr/share/doc/mariadb-common/changelog.Debian.gz
      /usr/share/doc/mariadb-common/copyright
      
      ```
      
      Closes PR #1690
      Reviewed by: otto@kekalainen.net
      85063aeb
    • Anel Husakovic's avatar
      MDEV-26080: SHOW GRANTS does not quote role names properly for DEFAULT ROLE · d2dddbff
      Anel Husakovic authored
      - Used single quotes, back quotes are used with commit
      fafb35ee in 10.3 and will be changed.
      
      Reviewed by: serg@mariadb.org
      d2dddbff
  2. 08 Jul, 2021 1 commit
    • Igor Babaev's avatar
      MDEV-26095 Infinite recursion when processing embedded recursive CTE · 83e442fc
      Igor Babaev authored
                 with missing RECURSIVE
      
      If a table reference r used inthe specification of a CTE whose definition
      is contained in the WITH clause where RECURSIVE is omitted then this table
      reference cannot be considered as a recursive table reference even if it is
      used in the query that specifies CTE whose name is r. It can be considered
      only as a reference to an embedding CTE or to a temporary table or to
      a base table/view. If there is no such object with name r then an error
      message must be reported.
      This patch fixes the code that actually in some cases resolved r as a
      reference to the CTE whose specification contained r if its name was r
      in spite of the fact that r was not considered as a recursive CTE.
      This happened in the cases when the definition of r was used in the
      specification of another CTE. Such wrong name resolution for r led to an
      infinite recursive invocations of the parser that ultimately crashed the
      server.
      This bug is a result of the fix for mdev-13780 that was not quite correct.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      83e442fc
  3. 06 Jul, 2021 3 commits
    • Sergei Golubchik's avatar
      MDEV-25802 mtr: race condition if the test quickly restarts twice · 621fae3c
      Sergei Golubchik authored
      part II
      
      need to tell SafeProcess not to collect the exited mysqld
      in sleep_until_file_created(), so that it would be found in the
      later wait_any_timeout() in run_testcase()
      
      Removed a strange condition in SafeProcess::wait_one()
      that treated return value of -1 from waitpid() as "process exists"
      instead of as "no such child process" (see `perldoc -f waitpid`)
      621fae3c
    • Sergei Golubchik's avatar
      MDEV-25802 mtr: race condition if the test quickly restarts twice · 1223cfe1
      Sergei Golubchik authored
      expect file is always removed before starting a server.
      So if it exists here, it means the server started successfully,
      mysqltest continued executing the test, created a new expect file,
      and shut down the server. All while we were waiting for the server
      to start.
      
      In other words, if the expect file exists, the server did actually start.
      Even if it isn't running now.
      
      This fixes occasional failures of innodb.log_corruption (in 10.6)
      1223cfe1
    • Sergei Golubchik's avatar
      MDEV-25857 MTR should report at least last test that was executed in case of... · 6a466db0
      Sergei Golubchik authored
      MDEV-25857 MTR should report at least last test that was executed in case of shutdown and not-completed
      
      * return a success/failure value from mysqld_start()
        and don't error out / exit in mysqld_start(), the caller will do
      * pass the correct $mysqld object into check_expected_crash_and_restart()
        instead of searching for it inside. Search in the caller
      * so that when a failed restart changes $mysqld->{proc}, mtr would
        still detect it as a failed mysqld (by updating $proc to match)
      
      also: log the server command line into the server error log
      6a466db0
  4. 05 Jul, 2021 1 commit
  5. 03 Jul, 2021 3 commits
  6. 02 Jul, 2021 5 commits
    • Sergei Golubchik's avatar
      MDEV-26081 set role crashes when a hostname cannot be resolved · 7c02e871
      Sergei Golubchik authored
      host can be NULL
      7c02e871
    • Eugene Kosov's avatar
      submodules.cmake: add missing --depth=1 · ffe744e7
      Eugene Kosov authored
      ffe744e7
    • Marko Mäkelä's avatar
      MDEV-26077 Assertion err != DB_DUPLICATE_KEY or unexpected ER_TABLE_EXISTS_ERROR · 2bf6f2c0
      Marko Mäkelä authored
      This is a backport of 161e4bfa.
      
      trans_rollback_to_savepoint(): Only release metadata locks (MDL)
      if the storage engines agree, after the changes were already rolled back.
      
      Ever since commit 3792693f
      and mysql/mysql-server@55ceedbc3feb911505dcba6cee8080d55ce86dda
      we used to cheat here and always release MDL if the binlog is disabled.
      
      MDL are supposed to prevent race conditions between DML and DDL also
      when no replication is in use. MDL are supposed to be a superset of
      InnoDB table locks: InnoDB table lock may only exist if the thread
      also holds MDL on the table name.
      
      In the included test case, ROLLBACK TO SAVEPOINT would wrongly release
      the MDL on both tables and let ALTER TABLE proceed, even though the DML
      transaction is actually holding locks on the table.
      
      Until commit 1bd681c8 (MDEV-25506)
      in MariaDB 10.6, InnoDB would often work around the locking violation
      in a blatantly non-ACID way: If locks exist on a table that is being
      dropped (in this case, actually a partition of a table that is being
      rebuilt by ALTER TABLE), InnoDB could move the table (or partition)
      into a queue, to be dropped after the locks and references had been
      released. If the lock is not released and the original copy of the
      table not dropped quickly enough, a name conflict could occur on
      a subsequent ALTER TABLE.
      
      The scenario of commit 3792693f
      is unaffected by this fix, because mysqldump
      would use non-locking reads, and the transaction would not be holding
      any InnoDB locks during the execution of ROLLBACK TO SAVEPOINT.
      MVCC reads inside InnoDB are only covered by MDL and page latches,
      not by any table or record locks.
      
      FIXME: It would be nice if storage engines were specifically asked
      which MDL can be released, instead of only offering a choice
      between all or nothing. InnoDB should be able to release any
      locks for tables that are no longer in trx_t::mod_tables, except
      if another transaction had converted some implicit record locks
      to explicit ones, before the ROLLBACK TO SAVEPOINT had been completed.
      
      Reviewed by: Sergei Golubchik
      2bf6f2c0
    • Marko Mäkelä's avatar
      MDEV-25129 fixup: Adjust test result · 5a2b6258
      Marko Mäkelä authored
      Fixup for commit 768c5188
      5a2b6258
    • Daniel Black's avatar
      MDEV-25129 postfix for windows · c22f7f23
      Daniel Black authored
      C:\projects\server\sql\sql_show.cc(7913): error C2220: warning treated as error - no 'object' file generated [C:\projects\server\win_build\sql\sql.vcxproj]
      C:\projects\server\sql\sql_show.cc(7913): warning C4267: 'initializing': conversion from 'size_t' to 'uint', possible loss of data [C:\projects\server\win_build\sql\sql.vcxproj]
      
      caused by 768c5188
      c22f7f23
  7. 30 Jun, 2021 1 commit
    • Sergei Petrunia's avatar
      MDEV-25969: Condition pushdown into derived table doesn't work if select list uses SP · eb20c91b
      Sergei Petrunia authored
      Consider a query of the form:
      
        select ... from (select item2 as COL1) as T where COL1=123
      
      Condition pushdown into derived table will try to push "COL1=123" condition
      down into table T.
      The process of pushdown involves "substituting" the item, that is,
      replacing Item_field("T.COL1") with its "producing item" item2.
      In order to use item2, one needs to clone it (call Item::build_clone).
      
      If the item is not cloneable (e.g. Item_func_sp is not), the pushdown
      process will fail and nothing at all will be pushed.
      
      Fixed by introducing transform_condition_or_part() which will try to apply
      the transformation for as many parts of condition as possible. The parts of
      condition that couldn't be transformed are dropped.
      eb20c91b
  8. 29 Jun, 2021 2 commits
  9. 28 Jun, 2021 1 commit
  10. 27 Jun, 2021 1 commit
  11. 26 Jun, 2021 2 commits
    • Igor Babaev's avatar
      8b3f816c
    • Igor Babaev's avatar
      MDEV-20411 Procedure containing CTE incorrectly stored in mysql.proc · 12c80df4
      Igor Babaev authored
      If the first token of the body of a stored procedure was 'WITH' then
      the beginning of the body was determined incorrectly and that token was
      missing in the string representing the body of the SP in mysql.proc. As a
      resultnany call of such procedure failed as the string representing the
      body could not be parsed.
      
      The patch corrects the code of the functions get_tok_start() and
      get_cpp_tok_start() of the class Lex_input_stream to make them take into
      account look ahead tokens. The patch is needed only for 10.2 as this
      problem has neen resolved in 10.3+.
      12c80df4
  12. 25 Jun, 2021 1 commit
  13. 23 Jun, 2021 3 commits
  14. 22 Jun, 2021 2 commits
  15. 21 Jun, 2021 2 commits
    • Igor Babaev's avatar
      MDEV-25679 Wrong result selecting from simple view with LIMIT and ORDER BY · cc0bd843
      Igor Babaev authored
      This bug affected queries with views / derived_tables / CTEs whose
      specifications were of the form
        (SELECT ... LIMIT <n>) ORDER BY ...
      Units representing such specifications contains one SELECT_LEX structure
      for (SELECT ... LIMIT <n>) and additionally SELECT_LEX structure for
      fake_select_lex. This fact should have been taken into account in the
      function mysql_derived_fill().
      
      This patch has to be applied to 10.2 and 10.3 only.
      cc0bd843
    • Marko Mäkelä's avatar
      Remove Travis CI status · 773a07b6
      Marko Mäkelä authored
      Builds on travis-ci.org ceased on 2021-06-15.
      773a07b6
  16. 17 Jun, 2021 1 commit
  17. 16 Jun, 2021 2 commits
  18. 15 Jun, 2021 7 commits
    • Julius Goryavsky's avatar
      MDEV-25880 part 2: Improving reliability of the SST scripts · 2edb8e12
      Julius Goryavsky authored
      Additional improvements aimed at improving operational
      reliability of the SST scripts:
      
      1) Script need to give rsync and stunnel a short time to
         terminate after "kill -9" before the first PID check
         using ps utility;
      2) The temporary file used to create the binlog index could
         sometimes remain in the data directory if tar failed and
         then may be reused without being cleaned up (the next
         time when SST was run) - now it's fixed;
      3) The temporary file used to build the binlog index is now
         created using mktemp and, if this variable is present in
         the configuration file, in tmpdir;
      4) Checking the secret tag in SST via rsync is made faster
         and does not require creating a temporary file, which
         could remain in the data directory in case of failure;
      5) Added "-F" option to grep to check the tag when using
         mariabackup/xtrabackup-v2 - to avoid possible collisions
         in case of special characters in the tag value (unlikely
         scenario, but the new check is more reliable).
      2edb8e12
    • Julius Goryavsky's avatar
      MDEV-25880: rsync may be mistakenly killed when overlapping SST · 18d5be5b
      Julius Goryavsky authored
      This commit fixes a bug was originally discovered during the
      galera_nbo_sst_slave mtr test for 10.6 branch. However it is
      relevant for all versions and can lead to intermittent SST
      crashes via rsync on very fast server restarts - when a new
      SST process (for example, after starting a new server instance)
      overlaps the old SST process started by the previous, already
      terminated server. This overlap can result in the new rsync
      being killed instead of the old rsync, or the pid file from
      the new rsync being killed, which then lead to problems.
      18d5be5b
    • Eugene Kosov's avatar
      fix clang build · 1c35a3f6
      Eugene Kosov authored
      a new warning -Wunused-but-set-variable was introduced recently to clang
      1c35a3f6
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-24713 Assertion `dict_table_is_comp(index->table)' failed in row_merge_buf_add() · 7d591cf8
      Thirunarayanan Balathandayuthapani authored
      - During online alter conversion from compact to redundant,
      virtual column field length already set during
      innobase_get_computed_value(). Skip the char(n) check for
      virtual column in row_merge_buf_add()
      7d591cf8
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-25872 InnoDB: Assertion failure in row_merge_read_clustered_index upon... · 7229107e
      Thirunarayanan Balathandayuthapani authored
      MDEV-25872 InnoDB: Assertion failure in row_merge_read_clustered_index upon ALTER on table with indexed virtual columns
      
      - InnoDB fails to check DB_COMPUTE_VALUE_FAILED error in
      row_merge_read_clustered_index() and wrongly asserts that
      the buffer shouldn't be ran out of memory. Alter table
      should give warning when the column value is being
      truncated.
      7229107e
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-14180 Automatically disable key rotation checks for file_key_managment plugin · 8c7d8b71
      Thirunarayanan Balathandayuthapani authored
      Problem:
      =======
      - InnoDB iterates the fil_system space list to encrypt the
      tablespace in case of key rotation. But it is not
      necessary for any encryption plugin which doesn't do
      key version rotation.
      
      Solution:
      =========
      - Introduce a new variable called srv_encrypt_rotate to
      indicate whether encryption plugin does key rotation
      
      fil_space_crypt_t::key_get_latest_version(): Enable the
      srv_encrypt_rotate only once if current key version is
      higher than innodb_encyrption_rotate_key_age
      
      fil_crypt_must_default_encrypt(): Default encryption tables
      should be added to default_encryp_tables list if
      innodb_encyrption_rotate_key_age is zero and encryption
      plugin doesn't do key version rotation
      
      fil_space_create(): Add the newly created space to
      default_encrypt_tables list if
      fil_crypt_must_default_encrypt() returns true
      
      Removed the nondeterministic select from
      innodb-key-rotation-disable test. By default,
      InnoDB adds the tablespace to the rotation list and
      background crypt thread does encryption of tablespace.
      So these select doesn't give reliable results.
      8c7d8b71
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-14180 preparation: Rename key_rotation_list · 7d2c338c
      Thirunarayanan Balathandayuthapani authored
      - Rename the rotation list to default_encrypt_tables in
      fil_system_t. Because rotation list naming could be
      misleading when it comes to key version rotation
      
      - Rename is_in_rotation_list to is_in_default_encrypt
      in fil_space_t
      
      - Rename keyrotate_next function to default_encrypt_next
      
      fil_system_t::default_encrypt_next(): Find the next
      suitable default encrypt table if beginning of
      default_encrypt_tables list has been scheduled
      to be deleted
      7d2c338c