1. 18 Mar, 2021 15 commits
  2. 17 Mar, 2021 13 commits
  3. 16 Mar, 2021 5 commits
    • Anel Husakovic's avatar
      MDEV-24601: INFORMATION_SCHEMA doesn't differentiate between column and... · 825c0e2a
      Anel Husakovic authored
      MDEV-24601: INFORMATION_SCHEMA doesn't differentiate between column and table-level CHECK constraints
      
      - Reviewed by: wlad@mariadb.com
      825c0e2a
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · f87a944c
      Marko Mäkelä authored
      f87a944c
    • Marko Mäkelä's avatar
      MDEV-24818: Optimize multi-statement INSERT into an empty table · 8ea923f5
      Marko Mäkelä authored
      If the user "opts in" (as in the parent
      commit 92b2a911),
      we can optimize multiple INSERT statements to use table-level locking
      and undo logging.
      
      There will be a change of behavior:
      
          CREATE TABLE t(a PRIMARY KEY) ENGINE=InnoDB;
          SET foreign_key_checks=0, unique_checks=0;
          BEGIN; INSERT INTO t SET a=1; INSERT INTO t SET a=1; COMMIT;
      
      will end up with an empty table, because in case of an error,
      the entire transaction will be rolled back, instead of rolling
      back the failing statement. Previously, the second INSERT statement
      would have been logged row by row, and only that second statement
      would have been rolled back, leaving the first INSERT intact.
      
      lock_table_x_unlock(), trx_mod_table_time_t::WAS_BULK: Remove.
      Because we cannot really support statement rollback in this
      optimized mode, we will not optimize the locking. The exclusive
      table lock will be held until the end of the transaction.
      8ea923f5
    • Marko Mäkelä's avatar
      MDEV-24818 Concurrent use of InnoDB table is impossible until the first transaction is finished · 92b2a911
      Marko Mäkelä authored
      In MDEV-515, we enabled an optimization where an insert into an
      empty table will use table-level locking and undo logging.
      This may break applications that expect row-level locking.
      
      The SQL statements created by the mysqldump utility will include the
      following:
      
          SET unique_checks=0, foreign_key_checks=0;
      
      We will use these flags to enable the table-level locked and logged
      insert. Unless the parameters are set, INSERT will be executed in
      the old way, with row-level undo logging and implicit record locks.
      92b2a911
    • Jan Lindström's avatar
      MDEV-24916 : Assertion `current_stmt_binlog_format == BINLOG_FORMAT_STMT ||... · f4e4bff9
      Jan Lindström authored
      MDEV-24916 : Assertion `current_stmt_binlog_format == BINLOG_FORMAT_STMT || current_stmt_binlog_format == BINLOG_FORMAT_ROW' failed in THD::is_current_stmt_binlog_format_row
      
      Store old value of binlog format before wsrep code so that
      if we bail out because wsrep is not ready for connections
      we can restore binlog format correctly.
      f4e4bff9
  4. 15 Mar, 2021 6 commits
    • Vladislav Vaintroub's avatar
      update libmariadb · 8dd35a25
      Vladislav Vaintroub authored
      CONC-534 memory leak in ps_bugs.c
      8dd35a25
    • Vlad Lesin's avatar
      MDEV-24184 InnoDB RENAME TABLE recovery failure if names are reused · 8cbada87
      Vlad Lesin authored
      fil_op_replay_rename(): Remove.
      
      fil_rename_tablespace_check(): Remove a parameter is_discarded=false.
      
      recv_sys_t::parse(): Instead of applying FILE_RENAME operations,
      buffer the operations in renamed_spaces.
      
      recv_sys_t::apply(): In the last_batch, apply renamed_spaces.
      8cbada87
    • Vladislav Vaintroub's avatar
      update libmariadb · 2f53ad4b
      Vladislav Vaintroub authored
      2f53ad4b
    • Marko Mäkelä's avatar
      MDEV-24883 fixup: Add a dependency · a0558b8c
      Marko Mäkelä authored
      In commit 783625d7 we forgot to
      declare a dependency on the generated file mysqld_error.h.
      a0558b8c
    • Otto Kekäläinen's avatar
      MDEV-24927: Deb: Use liburing-dev instead of libaio-dev · 211e9b3e
      Otto Kekäläinen authored
      Updating the debian/control file will automatically update the dependencies
      in all CI environments that directly read the debian/control file, such
      as Salsa-CI and buildbot.mariadb.org to some degree.
      (https://github.com/MariaDB/mariadb.org-tools/issues/43)
      
      On Debian/Ubuntu releases that don't have liburing-dev available,
      automatically downgrade to libaio-dev (just like libcurl4->3 is done).
      This ensures the debian/control file is always up-to-date and works for
      latest Debian and Ubuntu releases, while the backwards compatibility mods
      are maintained in autobake-deb.sh separately, and can be dropped from there
      once support for certain platforms end.
      
      Debian/Ubuntu availability visible at:
      - https://packages.debian.org/search?searchon=names&keywords=liburing-dev
      - https://packages.ubuntu.com/search?searchon=names&keywords=liburing-dev
      
      Also modify debian/rules to force a build without libaio. Use YES instead
      of ON to make the flag more logical (=turning libaio check "off").
      
      Stop running Salsa-CI for Debian Stretch-backports, as it does not have
      liburing-dev available nor is the old-old Debian stable a relevant platform
      for MariaDB 10.6 to test against anymore. Since the Stretch-backports build
      can no longer be made, neither can the MySQL 5.7 on Bionic upgrade test be
      run, as it depended on the Stretch binary.
      
      This commit does not modify the .travis.yml file, as Travis-CI does not
      have new enough Ubuntu releases available yet. Also Travis-CI.org is
      practically dead now as build times have been shrunk to near zero.
      
      The scope of this change is also Debian/Ubuntu only. No RPM or Windows or
      Mac changes are included in this commit.
      
      This commit does not update the external libmariadb or ColumnStore
      CI pipelines, as those are maintained in different repositories.
      211e9b3e
    • Marko Mäkelä's avatar
      MDEV-24883 add io_uring support for tpool · 783625d7
      Marko Mäkelä authored
      liburing is a new optional dependency (WITH_URING=auto|yes|no)
      that replaces libaio when it is available.
      
      aio_uring: class which wraps io_uring stuff
      
      aio_uring::bind()/unbind(): optional optimization
      
      aio_uring::submit_io(): mutex prevents data race. liburing calls are
      thread-unsafe. But if you look into it's implementation you'll see
      atomic operations. They're used for synchronization between kernel and
      user-space only. That's why our own synchronization is still needed.
      
      For systemd, we add LimitMEMLOCK=524288 (ulimit -l 524288)
      because the io_uring_setup system call that is invoked
      by io_uring_queue_init() requests locked memory. The value
      was found empirically; with 262144, we would occasionally
      fail to enable io_uring when using the maximum values of
      innodb_read_io_threads=64 and innodb_write_io_threads=64.
      
      aio_uring::thread_routine(): Tolerate -EINTR return from
      io_uring_wait_cqe(), because it may occur on shutdown
      on Ubuntu 20.10 (Groovy Gorilla).
      
      This was mostly implemented by Eugene Kosov. Systemd integration
      and improved startup/shutdown error handling by Marko Mäkelä.
      783625d7
  5. 12 Mar, 2021 1 commit