1. 15 Jun, 2021 6 commits
    • 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
    • Daniel Black's avatar
      cmake OpenBSD copyright notice correction · be243ed9
      Daniel Black authored
      Brad Smith made this OpenBSD file based of the
      FreeBSD cmake directives in commit ab589043
      by the Monty Program Ab.
      
      As such the Oracle Copyright header isn't really applicable.
      be243ed9
    • Jordy Zomer's avatar
      eventscheduler mismatch of my_{malloc,free}, delete · ec4df514
      Jordy Zomer authored
      Fix malloc/delete mismatch. This causes a double free in the cleanup.
      
      closes #1845
      ec4df514
  2. 14 Jun, 2021 1 commit
  3. 12 Jun, 2021 2 commits
  4. 11 Jun, 2021 1 commit
  5. 10 Jun, 2021 2 commits
    • Otto Kekäläinen's avatar
      MDEV-20392: Skip ABI check if 'diff' is not found · 152c83d4
      Otto Kekäläinen authored
      Not all environments have 'diff' installed. Most notably CentOS 8
      does not have diff out-of-the-box. Thus users running 'cmake .' and
      'make' would fail to build MariaDB, and they would think the error
      was in ABI incompatibilities due to the error message emitted by CMake
      when in reality simply 'diff' was missing.
      
      This fixes it and makes the developer experience better by simply
      skipping the diffing if 'diff' is not found.
      
      Closes #1846
      152c83d4
    • Marko Mäkelä's avatar
      Remove orphan type name trx_sig_t · 396864c6
      Marko Mäkelä authored
      This was missed in commit 1d0f70c2.
      396864c6
  6. 09 Jun, 2021 2 commits
  7. 08 Jun, 2021 1 commit
    • Marko Mäkelä's avatar
      MDEV-25869 Change buffer entries are lost on InnoDB restart · dfa2d0bc
      Marko Mäkelä authored
      buf_read_ibuf_merge_pages(): If space->size is 0, invoke
      fil_space_get_size() to determine the size of the tablespace
      by reading the header page. Only after that proceed to delete
      any entries that are beyond the end of the tablespace.
      Otherwise, we could be deleting valid entries that actually
      need to be applied.
      
      This fixes a regression that had been introduced in
      commit b80df9eb (MDEV-21069),
      which aimed to avoid crashes during DROP TABLE of corrupted tables.
      dfa2d0bc
  8. 06 Jun, 2021 2 commits
    • Otto Kekäläinen's avatar
      Revert "CONNECT: move jar files to /usr/share and include them in DEBs" · 3c922d6d
      Otto Kekäläinen authored
      This partially reverts commit d7321893.
      
      The *.jar files are not being built and all Debian builds are failing
      as dh_install stops on missing files. To build them we would need to also
      add new Java build dependencies.
      
      In a stable release (10.2->10.5) we shouldn't add new files and certainly
      not any new build dependencies, so reverting commit.
      
      Also, the files are located in a different path, and already included
      in the mariadb-test-data package:
      
        /usr/share/mysql/mysql-test/plugin/connect/connect/std_data/JavaWrappers.jar
        /usr/share/mysql/mysql-test/plugin/connect/connect/std_data/JdbcMariaDB.jar
        /usr/share/mysql/mysql-test/plugin/connect/connect/std_data/Mongo2.jar
        /usr/share/mysql/mysql-test/plugin/connect/connect/std_data/Mongo3.jar
      
      This change needs to be redesigned and applies only on 10.6 or newer.
      3c922d6d
    • Vladislav Vaintroub's avatar
      MDEV-23815 Windows : mysql_upgrade_wizard fails, if service name has spaces · 9f9a925c
      Vladislav Vaintroub authored
      The fix is to quote service name parameter, when it is passed to
      mysql_upgrade_service subprocess.
      9f9a925c
  9. 05 Jun, 2021 1 commit
  10. 04 Jun, 2021 1 commit
    • Anel Husakovic's avatar
      MDEV-25777: JAVA_INCLUDE_PATH and JAVA_INCLUDE_PATH2 not found with out of... · 7eed97ed
      Anel Husakovic authored
      MDEV-25777: JAVA_INCLUDE_PATH and JAVA_INCLUDE_PATH2 not found with out of source configuration and Ninja generator
      
      - As solution `PLUGIN_CONNECT=NO` use early check to disable plugin:
        Solution suggested by wlad@mariadb.com
      - `JNI_FOUND` is a internal result variable and should be set with
      cached library and header variables (like `JAVA_INCLUDE_PATH`) defined.
        * Note: wrapper cmake/FindJNI.cmake runs first time and cmake native Find<module> returns only cached variable, like `JAVA_INCLUDE_PATH`, results variable are not cached).
      
      Reviewed by: serg@mariadb.com
      7eed97ed
  11. 02 Jun, 2021 3 commits
    • Sergei Golubchik's avatar
      MDEV-25672 table alias from previous statement interferes later commands · 5c896472
      Sergei Golubchik authored
      only perform the "correct table name" check for *new* generated columns,
      but not for already existing ones - they're guaranteed to be valid
      5c896472
    • Igor Babaev's avatar
      MDEV-25635 Assertion failure when pushing from HAVING into WHERE of view · 2e789108
      Igor Babaev authored
      This bug could manifest itself after pushing a where condition over a
      mergeable derived table / view / CTE DT into a grouping view / derived
      table / CTE V whose item list contained set functions with constant
      arguments such as MIN(2), SUM(1) etc. In such cases the field references
      used in the condition pushed into the view V that correspond set functions
      are wrapped into Item_direct_view_ref wrappers. Due to a wrong implementation
      of the virtual method const_item() for the class Item_direct_view_ref the
      wrapped set functions with constant arguments could be erroneously taken
      for constant items. This could lead to a wrong result set returned by the
      main select query in 10.2. In 10.4 where a possibility of pushing condition
      from HAVING into WHERE had been added this could cause a crash.
      
      Approved by Sergey Petrunya <sergey.petrunya@mariadb.com>
      2e789108
    • Marko Mäkelä's avatar
      MDEV-25730 fixup: GCC -Og -Wmaybe-uninitialized · a8434c6c
      Marko Mäkelä authored
      Silence a warning about an uninitialized variable that was
      introduced by commit d8fa71a0.
      a8434c6c
  12. 31 May, 2021 2 commits
    • Julius Goryavsky's avatar
      MDEV-25818: RSYNC SST failed due to busy port · 2fb44078
      Julius Goryavsky authored
      This commit reduces the likelihood of getting a busy port on
      quick restarts with rsync SST (problem MDEV-25818) and fixes
      a number of other flaws in SST scripts, adds new functionality,
      and also synchronizes the xtrabackup-v2 script with the
      mariabackup script (the latter applies only to the 10.2 branch):
      
       1) SST via rsync: rsync and stunnel does not always get the right
          time to complete by correctly handling SIGTERM. These utilities
          are now given more time to complete normally (via normal SIGTERM
          processing) before we move on to using "kill -9";
       2) SST via rsync: attempts to terminate an rsync or stunnel process
          (via "kill" utility) are only made if it did not terminated on
          its own;
       3) SST via rsync: if a combination of stunnel and rsync is used,
          then we need to wait for both utilities to finish or stop, not
          just one of them;
       4) The config file and pid file for stunnel are now deleted after
          successful completion of SST on the donor node;
       5) The configs and pid files from rsync and stunnel should not be
          deleted unless these utilities succeed (or are sucessfully
          terminated) on the joiner node;
       6) The configs and pid files now excluded from transfer via rsync;
       7) Spaces in paths are now valid for config files as well (when
          used with SST via rsync or mariabackup / xtrabackup[-v2]);
       8) SST via mariabackup: added preliminary verification of keys and
          certificates that are used when establishing a connection using
          SSL (to avoid long timeouts and improve diagnostics) - by analogy
          with how it is done for the xtrabackup-v2 (plus check for CA file),
          while that check is skipped if the user does not have openssl
          installed (or does not have diff utility);
       9) Added backup-threads=<n> configuration option which adds
          "--parallel=<n>" for mariabackup / xtrabackup at backup and
          move-back stages;
      10) Added encrypt-threads and encrypt-chunk-size configuration
          options for xbcrypt management (when xbcrypt is used);
      11) Small optimization: checking the socat version and adding
          a file with parameters for 2048-bit Diffie-Hellman (if necessary)
          is done only if the user has not specified "dhparam=" in the
          "sockopt" option value;
      12) SST via rsync now supports "backup-threads" configuration option
          (in server-related sections or in the "[sst]");
      13) Determining the number of available processors is now supported
          for FreeBSD + mariabackup/xtrabackup: before that we might have
          problems with "--compact" (rebuild indexes) or qpress on FreeBSD;
      14) The check_pid() function should not raise an error state in
          the rare cases when the pid file was created, but it is empty,
          or if it is deleted right during the check, or when zero is read
          from the pid file;
      15) Iproved templates that are used to check if a requested socket
          is "listening" when using the ss utility;
      16) Shortened some other templates for socket state utilities;
      17) Temporary files created by mariabackup / xtrabackup are moved
          to a separate subdirectory inside tmpdir (so they don't get
          mixed with other temporary files, which can make debugging
          more difficult);
      18) 10.2 only: the script for SST via xtrabackup-v2 has been brought
          in full compliance with all the bugfixes made for mariabackup (as
          it previously contained many flaws compared to the updated script
          for mariabackup).
      2fb44078
    • Vladislav Vaintroub's avatar
  13. 30 May, 2021 1 commit
    • Dmitry Shulga's avatar
      MDEV-25576: The statement EXPLAIN running as regular statement and as prepared... · 91bde0fb
      Dmitry Shulga authored
      MDEV-25576: The statement EXPLAIN running as regular statement and as prepared statement produces different results for UPDATE with subquery
      
      Both EXPLAIN and EXPLAIN EXTENDED statements produce different results set
      in case it is run in normal way and in PS mode for the statements
      UPDATE/DELETE with subquery.
      
      The use case below reproduces the issue:
      MariaDB [test]> CREATE TABLE t1 (c1 INT KEY) ENGINE=MyISAM;
      Query OK, 0 rows affected (0,128 sec)
      
      MariaDB [test]> CREATE TABLE t2 (c2 INT) ENGINE=MyISAM;
      Query OK, 0 rows affected (0,023 sec)
      
      MariaDB [test]> CREATE TABLE t3 (c3 INT) ENGINE=MyISAM;
      Query OK, 0 rows affected (0,021 sec)
      
      MariaDB [test]> EXPLAIN EXTENDED UPDATE t3 SET c3 =
          -> ( SELECT COUNT(d1.c1) FROM ( SELECT a11.c1 FROM t1 AS a11
          -> STRAIGHT_JOIN t2 AS a21 ON a21.c2 = a11.c1 JOIN t1 AS a12
          -> ON a12.c1 = a11.c1 ) d1 );
      +------+-------------+-------+------+---------------+------+---------+------+------+----------+--------------------------------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                          |
      +------+-------------+-------+------+---------------+------+---------+------+------+----------+--------------------------------+
      |    1 | PRIMARY     | t3    | ALL  | NULL          | NULL | NULL    | NULL |    0 |   100.00 |                                |
      |    2 | SUBQUERY    | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL |     NULL | Impossible WHERE noticed after reading const tables
      +------+-------------+-------+------+---------------+------+---------+------+------+----------+--------------------------------+
      2 rows in set (0,002 sec)
      
      MariaDB [test]> PREPARE stmt FROM
          -> EXPLAIN EXTENDED UPDATE t3 SET c3 =
          -> ( SELECT COUNT(d1.c1) FROM ( SELECT a11.c1 FROM t1 AS a11
          -> STRAIGHT_JOIN t2 AS a21 ON a21.c2 = a11.c1 JOIN t1 AS a12
          -> ON a12.c1 = a11.c1 ) d1 );
      Query OK, 0 rows affected (0,000 sec)
      Statement prepared
      
      MariaDB [test]>  EXECUTE stmt;
      +------+-------------+-------+------+---------------+------+---------+------+------+----------+--------------------------------+
      | id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                          |
      +------+-------------+-------+------+---------------+------+---------+------+------+----------+--------------------------------+
      |    1 | PRIMARY     | t3    | ALL  | NULL          | NULL | NULL    | NULL |    0 |   100.00 |                                |
      |    2 | SUBQUERY    | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL |     NULL | no matching row in const table |
      +------+-------------+-------+------+---------------+------+---------+------+------+----------+--------------------------------+
      2 rows in set (0,000 sec)
      
      The reason by that different result sets are produced is that on execution
      of the statement 'EXECUTE stmt' the flag SELECT_DESCRIBE not set
      in the data member SELECT_LEX::options for instances of SELECT_LEX that
      correspond to subqueries used in the UPDTAE/DELETE statements.
      
      Initially, these flags were set on parsing the statement
        PREPARE stmt FROM "EXPLAIN EXTENDED UPDATE t3 SET ..."
      but latter they were reset before starting real execution of
      the parsed query during handling the statement 'EXECUTE stmt';
      
      So, to fix the issue the functions mysql_update()/mysql_delete()
      have been modified to set the flag SELECT_DESCRIBE forcibly
      in the data member SELECT_LEX::options for the primary SELECT_LEX
      of the UPDATE/DELETE statement.
      91bde0fb
  14. 27 May, 2021 5 commits
  15. 26 May, 2021 1 commit
  16. 25 May, 2021 2 commits
    • Sergei Golubchik's avatar
      MDEV-25730: maria.repair test fails with valgrind · d8fa71a0
      Sergei Golubchik authored
      cherry-pick commit: 1fff2398
      MDEV-22530 post push fixes from 10.6.
      
      Followup. If the KILL happens - report it as a failure,
      don't eat it up silently. Note that this has to be done after `table_name`
      is populated, so that the error message could show it.
      d8fa71a0
    • Julius Goryavsky's avatar
      MDEV-21192: SST failing when enabling IPV6 · fe7e44d8
      Julius Goryavsky authored
      The following features have been added:
      
      1) Automatic addition of the pf = ip6 option for socat
         when it can be recognized by the format of the connection
         address;
      2) Automatically add or remove extra commas at the beginning
         and at the end of sockopt, for example, sockopt='pf=ip6'
         and sockopt=',pf=ip6' work equally well;
      
      Also, due to interference in the code of the get_transfer()
      function, I also refactored it and now:
      
      3) encrypt = 4 is supported not only for xtrabackup-v2,
         but also for mariabackup - this can help with migration
         from Percona;
      4) Improved setting of 'commonname' option for encrypt=3
         and encrypt=4 modes;
      fe7e44d8
  17. 24 May, 2021 2 commits
    • Julius Goryavsky's avatar
      MDEV-15730: rename --stream=xbstream to --stream=mbstream · 81f94c26
      Julius Goryavsky authored
      mbstream is already supported as a format name after MDEV-24580,
      but additional code refactoring has been done to correctly display
      the format name in log files and to check if the mbstream utility
      is in the path. Also, for xtrabackup-v2 (only available in the 10.2)
      both utilities are supported - both xbstram and mbstream, since they
      are interchangeable in this context. In this case, the original
      innobackupex always receives the correct --stream=xbstream option
      as input, but the user can actually try to use the mbstream utility
      during the transfer (if the user explicitly specifies this in the
      configuration file).
      81f94c26
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-25663 Double free of transaction during truncate operation · 5c75ba9c
      Thirunarayanan Balathandayuthapani authored
      - Patch addresses the problem to fix double free of
      transaction if it is own transaction.
      5c75ba9c
  18. 23 May, 2021 2 commits
  19. 22 May, 2021 3 commits