1. 21 Jun, 2022 1 commit
    • Julius Goryavsky's avatar
      MDEV-26562: galera-sst-mariabackup is failing due to missing xtrabackup_checkpoints · 3e09c619
      Julius Goryavsky authored
      This commit contains workaround for a bug known as 'Red Hat issue 1870279'
      (connection reset by peer issue in socat versions 1.7.3.3 to 1.7.4.0) which
      further causes crashes during SST using mariabackup (when openssl is used).
      
      Also fixed broken logic of automatic generation of the Diffie-Hellman parameters
      for socat version less than 1.7.3 (which defaults to 512-bit values instead of
      2048-bit ones).
      3e09c619
  2. 18 Jun, 2022 2 commits
    • Daniel Black's avatar
      MDEV-28884: include kernel information in crashing signal handler · d4539426
      Daniel Black authored
      Recent adventures in liburing and btrfs have shown up some kernel
      version dependent bugs. Having a bug report of accurace kernel version
      can start to correlate these errors sooner.
      
      On Linux, /proc/version contains the kernel version.
      
      FreeBSD has kern.version (per man 8 sysctl), so include that too.
      
      Example output:
      
      Max nice priority         0                    0
      Max realtime priority     0                    0
      Max realtime timeout      unlimited            unlimited            us
      Core pattern: |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
      
      Kernel version: Linux version 5.19.0-0.rc2.21.fc37.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1), GNU ld version 2.38-14.fc37) #1 SMP PREEMPT_DYNAMIC Mon Jun 13 15:27:24 UTC 2022
      
      Segmentation fault (core dumped)
      d4539426
    • Sergei Golubchik's avatar
      remove invalid test · f299351e
      Sergei Golubchik authored
      it starts an EXPLAIN of a multi-table join and tries to KILL it.
      no sync points.
      depending on how fast the hareware is and optimizer development
      it might kill EXPLAIN at some random point in time (generally unrelated
      to the Bug#28598 it was supposed to test) or EXPLAIN might finish
      before the KILL and the test will fail.
      f299351e
  3. 17 Jun, 2022 1 commit
    • Marko Mäkelä's avatar
      Fix intermittent failures of innodb.stats_persistent · be99d0dd
      Marko Mäkelä authored
      We do not really care about the exact result; we only care that the
      statistics will be accessed. The result could change depending on
      when some statistics were updated in the background or when some
      committed delete-marked rows were purged from other tables on
      which persistent statistics are enabled.
      be99d0dd
  4. 16 Jun, 2022 1 commit
    • Shunsuke Tokunaga's avatar
      MDEV-21027 Assertion `part_share->auto_inc_initialized ||... · c4f65d8f
      Shunsuke Tokunaga authored
      MDEV-21027 Assertion `part_share->auto_inc_initialized || !can_use_for_auto_inc_init()' failed in ha_partition::set_auto_increment_if_higher
      
      ha_partition::set_auto_increment_if_higher expects
      part_share->auto_inc_initialized is true or can_use_for_auto_inc_init()
      is false (but as the comment of this method says, it returns false
      only if we use Spider engine with DROP TABLE or ALTER TABLE query).
      However, part_share->auto_inc_initialized becomes true only after all
      partitions are opened (since 6dce6aec).
      
      Therefore, I added a conditional expression in order to read all
      partitions when we execute REPLACE on a table that has an
      AUTO_INCREMENT column.           
      
      Reviewed by: Nayuta Yanagisawa
      Reviewed by: Alexey Botchkov
      c4f65d8f
  5. 15 Jun, 2022 2 commits
  6. 14 Jun, 2022 2 commits
    • Julius Goryavsky's avatar
    • Tuukka Pasanen's avatar
      MDEV-28628: Change current Debian package revision scheme · c168e167
      Tuukka Pasanen authored
      Current Debian package revision scheme when using
      debian/autobake-deb.sh script is:
        '1:VERSION+maria~LSBNAME'
      
      For example if VERSION can be like 10.6.8 and LSBNAME is
      buster then version and revision is:
        '1:10.6.8+maria~buster'
      Which can lead to problem as distro code names can be lexical unordered.
      
      For example Debian LSBNAME's can be:
        Codename Buster is Debian version 10
        Codename Bookworm is Debian version 11
      
      This happens because in ASCII table
      Buster first two digits are 'Bu' and they are in hex 0x42 and 0x75
      and Bookworm first digits 'Bo' are they are in hex 0x42 and 0x6F
      When apt is upgrading it  means that:
        1:10.6.8+maria~buster is bigger than 1:10.6.8+maria~bookworm
      and that leads to problems in dist-upgrade process
      
      To solve problem revision format is changed to:
        '1:VERSION+maria~(deb|ubu)LSBVERSION'
      
      Example for Debian 11 is now:
        1:10.6.8+maria~deb11
      
      and for Ubuntu 22.04 is now:
        1:10.6.8+maria~ubu2204
      
      There are new Variables
       * VERSION which contains whole version string
       * LSBVERSION which contains LSB version of distro
       * LSBID which contains LSB ID (Debian or Ubuntu)
      added to debian/autobake-deb.sh.
      
      Also CODENAME is change to LSBNAME as it's more declaritive
      c168e167
  7. 13 Jun, 2022 1 commit
    • Nayuta Yanagisawa's avatar
      MDEV-26127 Assertion `err != DB_DUPLICATE_KEY' failed or InnoDB: Failing... · e077ce2a
      Nayuta Yanagisawa authored
      MDEV-26127 Assertion `err != DB_DUPLICATE_KEY' failed or InnoDB: Failing assertion: id != 0 on ALTER ... REBUILD PARTITION
      
      During rebuild of partition, the partitioning engine calls
      alter_close_table(), which does not unlock and close some table
      instances of the target table.
      Then, the engine fails to rename partitions because there are table
      instances that are still locked.
      
      Closing all the table instance of the target table fixes the bug.
      e077ce2a
  8. 10 Jun, 2022 2 commits
    • Mathew Heard's avatar
      MDEV-27766: connect engine; INSERT ignore option, was ignored · b59bc629
      Mathew Heard authored
      Test prior to this change:
      
      CURRENT_TEST: connect.mysql
      mysqltest: At line 485: query 'INSERT IGNORE INTO t3 VALUES (5),(10),(30)' failed: ER_GET_ERRMSG (1296): Got error 122 '(1062) Duplicate entry '10' for key 'PRIMARY' [INSERT INTO `t1` (`a`) VALUES (10)]' from CONNECT
      
      So the ignore table option wasn't getting passed to the remove server.
      Closes #2008
      b59bc629
    • Tuukka Pasanen's avatar
      MDEV-28666: Add correct 'Breaks' to make sure upgrade from 10.2 succeeds · ace2e030
      Tuukka Pasanen authored
      File '/usr/bin/mariadb_config' has been moved from Debian package
      libmariadbd-dev to libmariadb-dev since MariaDB version 10.2
      this leads to situation where upgrade will no succeed but fail
      with this kind of error message
      
       * trying to overwrite '/usr/bin/mariadb_config', which is also in package libmariadbd-dev 1:10.2.44+maria~bionic
      
      Add libmariadbd-dev to libmariadb-dev Debian control files
      'Breaks' solve situation and upgrading won't error anymore
      ace2e030
  9. 09 Jun, 2022 3 commits
    • Marko Mäkelä's avatar
      MDEV-28779: ALTER TABLE IMPORT TABLESPACE corrupts an encrypted table · 98293130
      Marko Mäkelä authored
      PageConverter::update_header(): Remove an unnecessary write.
      The field that was originally called FIL_PAGE_FILE_FLUSH_LSN only
      made sense for the first page of the system tablespace
      (initially, for the first page of each file of the system tablespace).
      It never had any meaning for .ibd files, and it lost its original
      meaning in MariaDB Server 10.8.1 when
      commit b07920b6 (MDEV-27199)
      removed the ability to start without ib_logfile0.
      
      If the most significant 32 bits of the LSN are nonzero, this
      unnecessary write would write the wrong encryption key identifier
      to the page. The first page of any file is never encrypted,
      so normally those bytes should be 0 for any .ibd file.
      98293130
    • Daniel Lewart's avatar
      MDEV-25577 mariadb-tzinfo-to-sql generates superfluous warnings · 2cd1edfc
      Daniel Lewart authored
      The zoneinfo directory is littered with non-timezone information files.
      
      These frequently contain extensions, not present in real timezone files.
      
      Alo leapseconds is frequently there and is not a timezone file.
      2cd1edfc
    • GuiXiaoDi's avatar
      mysql.server.sh fix for non-Red Hat platforms · 9c207c88
      GuiXiaoDi authored
      The else condition is meant to be here to define the functions
      if the Red Hat include file isn't there.
      
      Fixes: commit 467011bc / MDEV-26614
      
      RedHat -> Red Hat by Daniel Black
      9c207c88
  10. 08 Jun, 2022 2 commits
  11. 07 Jun, 2022 3 commits
    • Sergei Golubchik's avatar
      main.help: flush help tables after modifying them · 37ea0778
      Sergei Golubchik authored
      otherwise following tests that crash the server will see them
      corrupted
      37ea0778
    • Sergei Golubchik's avatar
      typo fixed: [[space]] -> [[:space:]] · 7c4efab9
      Sergei Golubchik authored
      7c4efab9
    • Sergei Petrunia's avatar
      MDEV-28749: restore_prev_nj_state() doesn't update cur_sj_inner_tables correctly · 19c72163
      Sergei Petrunia authored
      (Try 2) (Cherry-pick back into 10.3)
      
      The code that updates semi-join optimization state for a join order prefix
      had several bugs. The visible effect was bad optimization for FirstMatch or
      LooseScan strategies: they either weren't considered when they should have
      been, or considered when they shouldn't have been.
      
      In order to hit the bug, the optimizer needs to consider several different
      join prefixes in a certain order. Queries with "obvious" query plans which
      prune all join orders except one are not affected.
      
      Internally, the bugs in updates of semi-join state were:
      1. restore_prev_sj_state() assumed that
        "we assume remaining_tables doesnt contain @tab"
        which wasn't true.
      2. Another bug in this function: it did remove bits from
         join->cur_sj_inner_tables but never added them.
      3. greedy_search() adds tables into the join prefix but neglects to update
         the semi-join optimization state. (It does update nested outer join
         state, see this call:
           check_interleaving_with_nj(best_table)
         but there's no matching call to update the semi-join state.
         (This wasn't visible because most of the state is in the POSITION
          structure which is updated. But there is also state in JOIN, too)
      
      The patch:
      - Fixes all of the above
      - Adds JOIN::dbug_verify_sj_inner_tables() which is used to verify the
        state is correct at every step.
      - Renames advance_sj_state() to optimize_semi_joins().
        = Introduces update_sj_state() which ideally should have been called
          "advance_sj_state" but I didn't reuse the name to not create confusion.
      19c72163
  12. 06 Jun, 2022 1 commit
    • Monty's avatar
      Fixed crashing when using DBUG_PUSH_EMPTY · 392e744a
      Monty authored
      DBUG_PUSH_EMPTY is used by thr_mutex.cc.
      If there are 4G of DBUG_PUSH_EMPTY calls, then DBUG_POP_EMPTY will
      cause a crash when DBUGCloseFile() will try to free an object that
      was never allocated.
      392e744a
  13. 03 Jun, 2022 1 commit
  14. 01 Jun, 2022 2 commits
  15. 30 May, 2022 4 commits
    • Monty's avatar
      Fixed bug in ma_loghandler.cc that could cause an assert · 9d10b710
      Monty authored
      The assert happens in 10.6 with the following command:
      
      ./mtr --no-reorder --verbose-restart main.update_ignore_216 main.upgrade_MDEV-19650 main.upgrade_MDEV-23102-1 main.upgrade_MDEV-23102-2 main.upgrade_geometrycolumn_procedure_definer main.upgrade_mdev_24363 main.varbinary sys_vars.aria_log_file_size_basic
      
      Reviewer: Oleksandr Byelkin <sanja@mariadb.com>
      9d10b710
    • Monty's avatar
      Remove compiler warning about unused variables · 131c318b
      Monty authored
      131c318b
    • Marko Mäkelä's avatar
      MDEV-28689, MDEV-28690: Incorrect error handling for ctrl_mutex · 863c3eda
      Marko Mäkelä authored
      comp_thread_ctxt_t: Remove ctrl_mutex, ctrl_cond, started. We do not
      actually need them for anything.
      
      destroy_worker_thread(): Split from destroy_worker_threads().
      
      create_worker_threads(): We already initialize
      thd->data_avail=FALSE and thd->cancelled=FALSE before
      invoking pthread_create(). If any thread creation fails,
      clean up by destroy_worker_thread().
      
      compress_worker_thread_func(): Assume that thd->started and
      thd->data_avail are already initialized.
      
      Reviewed by: Vladislav Vaintroub
      863c3eda
    • Masashi Tomooka's avatar
      MDEV-28599 EXCHANGE PARTITION on view causes ER_CHECK_NO_SUCH_TABLE instead of ER_WRONG_OBJECT · f7137a61
      Masashi Tomooka authored
      ER_CHECK_NO_SUCH_TABLE was raised because a view does not have
      the corresponding TABLE instance connected to TABLE_LIST and the
      server interprets the absence as the absence of the table itself.
      
      To fix the problem, we add a check to ensure that the target table
      to be swapped with a partition is not a view.
      
      Reviewed by: Nayuta Yanagisawa
      f7137a61
  16. 27 May, 2022 1 commit
  17. 26 May, 2022 1 commit
    • Ting Nian's avatar
      Add option --enable-cleartext-plugin to the MariaDB client · 31e30329
      Ting Nian authored
      For compatibility reasons, add the option to the MariaDB client without
      any functional changes besides simply accepting the option and emitting
      a warning that it is obsolete.
      
      In MySQL this security related option is compulsory in certain use
      cases. When users switch to MariaDB, this client command that used to
      work starts failing without a sensible error message. In worst case
      users resort to re-installing the mysql client from MySQL.
      
      In MariaDB the option is obsolete and should simply be ignored. Users
      however don't have any opportunity to learn that unless the client
      program tells them so.
      
      Before:
      
          mysql --enable-cleartext-plugin ...
          mysql: unknown option '--enable-cleartext-plugin'
      
          (program terminates)
      
      After:
      
          mysql --enable-cleartext-plugin ...
          WARNING: option '--enable-cleartext-plugin' is obsolete.
      
          (program executes)
      
      All new code of the whole pull request, including one or several files
      that are either new files or modified ones, are contributed under the
      BSD-new license. I am contributing on behalf of my employer Amazon Web
      Services, Inc.
      31e30329
  18. 25 May, 2022 2 commits
  19. 23 May, 2022 1 commit
  20. 20 May, 2022 2 commits
  21. 19 May, 2022 1 commit
    • Oleg Smirnov's avatar
      MDEV-28246 Optimizer uses all partitions after upgrade to 10.3 · 40d9dbb2
      Oleg Smirnov authored
      Cause: a copy of the joined TABLE_LIST is created during multi_update::prepare
      and TABLE::pos_in_table_list of the tables are set to point to the new
      TABLE_LIST object. This prevents some optimization steps to perform correctly.
      Solution: do not update pos_in_table_list during multi_update::prepare
      40d9dbb2
  22. 18 May, 2022 1 commit
    • KiyoshiTakeda's avatar
      MDEV-14642 Assertion 'table->s->db_create_options ==... · 8881c010
      KiyoshiTakeda authored
      MDEV-14642 Assertion 'table->s->db_create_options == part_table->s->db_create_options' failed in compare_table_with_partition
      
      When trying to execute ALTER TABLE EXCHANGE PARTITION with different
      definitions, assertion
      
          table->s->db_create_options == part_table->s->db_create_options
      
      failed in compare_table_with_partition().
      
      However, this execution should not be allowed since executing
      'exchange partition' requires the identical structure of the two tables.
      
      To fix the problem, I deleted the assertion code and added code that
      returns an error that indicates tables have different definitions.
      
      Reviewed By: Nayuta Yanagisawa
      8881c010
  23. 17 May, 2022 3 commits
    • Sergei Golubchik's avatar
      Merge branch '10.2' into 10.3 · a0d4f0f3
      Sergei Golubchik authored
      commit 84984b79 is null-merged
      a0d4f0f3
    • Julius Goryavsky's avatar
      MDEV-28583: Galera: binlogs disappear after rsync IST · d388e7eb
      Julius Goryavsky authored
      This commit sends a flag indicating the presence of the "--bypass"
      option from the donor node to the joiner nodes during rsync IST,
      because without such a flag it is impossible to distinguish IST
      from the SST on the joiner nodes (in IST/SST scripts, because the
      "--bypass" option is still not passed to scripts from server code).
      Specifically, this fixes an issue with binary logs disappearing
      after IST (via rsync). There are also changes to diagnostic messages
      here that will make it easier to diagnose script-related problems
      in the future when debugging and when checking the logs. This commit
      also adds more robust signal handlers - to handle exceptions during
      script execution. These handlers won't mask some crashes and it
      also unifies exit codes between different scripts. These changes
      have already been helpful to debugging "bypass" flag handling.
      d388e7eb
    • Julius Goryavsky's avatar
      MDEV-28423: Galera IST is failing on Joiner node · b081ad8c
      Julius Goryavsky authored
      This commit fixes an issue with IST handling in
      version 10.9 which is a regression after MDEV-26971
      and related to trying to get a non-existent "total"
      tag on the IST branch (this tag is only defined in
      SST mode).
      b081ad8c