1. 01 Jun, 2021 10 commits
  2. 31 May, 2021 7 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
    • Marko Mäkelä's avatar
      MDEV-25745: Not applying INSERT_REUSE_REDUNDANT · 139333a6
      Marko Mäkelä authored
      page_apply_insert_redundant(): Correct a condition that would
      occasionally fail when recovering changes for the change buffer tree
      (where extra_size and data_size can vary wildly).
      
      This was broken in commit 138cbec5
      (MDEV-21724).
      139333a6
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Cleanup: deduplicate code · 601eb411
      Marko Mäkelä authored
      601eb411
    • Alexey Botchkov's avatar
      MDEV-15888 Implement FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK for views. · b118f92b
      Alexey Botchkov authored
      Enable the FLUSH TABLES for views. It works now.
      b118f92b
    • Vladislav Vaintroub's avatar
    • Georg Richter's avatar
      MDEV-25511: Command line tools don't support CRL parameters · be8e51c4
      Georg Richter authored
      Enable CRL support for GnuTLS (which was implemented by CONC-433).
      be8e51c4
  3. 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
  4. 29 May, 2021 1 commit
  5. 28 May, 2021 2 commits
  6. 27 May, 2021 9 commits
    • Sergei Golubchik's avatar
      CONNECT: use my_snprintf · d06205ba
      Sergei Golubchik authored
      d06205ba
    • Sergei Golubchik's avatar
      mtr: fix the debug printout · 1638241e
      Sergei Golubchik authored
      to print all arguments of _verbose(), not just the number of them
      1638241e
    • Sergei Golubchik's avatar
      MDEV-25792 server hangs on early shutdown if InnoDB needs to purge indexed virtual columns · 08bc7ee0
      Sergei Golubchik authored
      if the server isn't started and innodb initiated a shutdown process -
      don't wait for the server to start, it won't
      08bc7ee0
    • Robert Bindar's avatar
    • Robert Bindar's avatar
      ef0d8839
    • Marko Mäkelä's avatar
      MDEV-25312 fixup: Fix .isl file parsing · f078788e
      Marko Mäkelä authored
      read_link_file(): Avoid GCC -Wtype-limits when char is unsigned,
      by always using unsigned comparison. Also, avoid buffer overflow
      when the .isl file consists entirely of spaces or control codes.
      f078788e
    • Marko Mäkelä's avatar
      MDEV-25791: Remove UNIV_INTERN · a7d68e7a
      Marko Mäkelä authored
      Back in 2006 or 2007, when MySQL AB and Innobase Oy existed as
      separately controlled entities (Innobase had been acquired by
      Oracle Corporation), MySQL 5.1 introduced a storage engine plugin
      interface and Oracle made use of it by distributing a separate
      InnoDB Plugin, which would contain some more bug fixes and
      improvements, compared to the version of InnoDB that was statically
      linked with the mysqld server that was distributed by MySQL AB.
      The built-in InnoDB would export global symbols, which would clash
      with the symbols of the dynamic InnoDB Plugin (which was supposed
      to override the built-in one when present).
      
      The solution to this problem was to declare all global symbols with
      UNIV_INTERN, so that they would get the GCC function attribute that
      specifies hidden visibility.
      
      Later, in MariaDB Server, something based on Percona XtraDB (a fork of
      MySQL InnoDB) became the statically linked implementation, and something
      closer to MySQL InnoDB was available as a dynamic plugin. Starting with
      version 10.2, MariaDB Server includes only one InnoDB implementation,
      and hence any reason to have the UNIV_INTERN definition was lost.
      
      btr_get_size_and_reserved(): Move to the same compilation unit with
      the only caller.
      
      innodb_set_buf_pool_size(): Remove. Modify innobase_buffer_pool_size
      directly.
      
      fil_crypt_calculate_checksum(): Merge to the only caller.
      
      ha_innobase::innobase_reset_autoinc(): Merge to the only caller.
      
      thd_query_start_micro(): Remove. Call thd_start_utime() directly.
      a7d68e7a
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-25758 InnoDB spatial indexes miss large geometry fields after MDEV-25459 · c11c5f36
      Thirunarayanan Balathandayuthapani authored
      InnoDB should calculate the MBR for the first field of
      spatial index and do the comparison with the clustered
      index field MBR. Due to MDEV-25459 refactoring, InnoDB
      calculate the length of the first field and fails with
      too long column error.
      c11c5f36
    • Marko Mäkelä's avatar
      Cleanup: Remove handler::update_table_comment() · ab87fc6c
      Marko Mäkelä authored
      The only call of the virtual member function
      handler::update_table_comment() was removed in
      commit 82d28fad (MySQL 5.5.53)
      but the implementation was not removed.
      
      The only non-trivial implementation was for InnoDB. The information
      is now returned via handler::get_foreign_key_create_info() and
      ha_statistics::delete_length.
      ab87fc6c
  7. 26 May, 2021 10 commits