1. 16 Oct, 2020 1 commit
    • Monty's avatar
      MDEV-23248 Server crashes in mi_extra / ha_partition::loop_extra_alter upon REORGANIZE · 311b7f94
      Monty authored
      This also fixes some issues with
      MDEV-23730 s3.replication_partition 'innodb,mix' segv
      
      The problem was that mysql_change_partitions() closes all handler files
      in case of error, which was not properly reflected in
      fast_alter_partition_table(). This caused handle_alter_part_error() to
      try to close already closed tables, which caused the crash.
      
      Fixed fast_alter_partion_table() to reflect when tables are opened.
      I also fixed that ha_partition::change_partitions() resets m_new_file in
      case of errors.
      Either of the above changes fixes the issue, but both are needed to ensure
      that the code works as expected.
      311b7f94
  2. 07 Oct, 2020 2 commits
  3. 05 Oct, 2020 4 commits
  4. 01 Oct, 2020 1 commit
  5. 30 Sep, 2020 3 commits
  6. 29 Sep, 2020 4 commits
  7. 28 Sep, 2020 7 commits
  8. 25 Sep, 2020 1 commit
  9. 24 Sep, 2020 1 commit
  10. 23 Sep, 2020 7 commits
    • Daniel Black's avatar
      3d28d1f3
    • Daniel Black's avatar
      MDEV-23697: perl -w -> perl · 4ddaa571
      Daniel Black authored
      Leave debian/additions/mysqlreport as #!/usr/bin/perl
      
      Acknowledge that `env perl` is a hack, a complete fix
      needs to consider which path perl is at and insert into
      these scripts.
      
      The usefulness of these scripts is questionable.
      4ddaa571
    • Daniel Black's avatar
    • Marko Mäkelä's avatar
      MDEV-22387: Do not violate __attribute__((nonnull)) · 7c5519c1
      Marko Mäkelä authored
      Passing a null pointer to a nonnull argument is not only undefined
      behaviour, but it also grants the compiler the permission to optimize
      away further checks whether the pointer is null. GCC -O2 at least
      starting with version 8 may do that, potentially causing SIGSEGV.
      7c5519c1
    • Marko Mäkelä's avatar
      UBSAN: Fix a bit shift overflow · 70960bd3
      Marko Mäkelä authored
      Shifting a 16-bit type by 16 bits is undefined behaviour.
      The result is at least 32 bits, so let us cast the shift operand
      to a wider type before shifting.
      70960bd3
    • Marko Mäkelä's avatar
      Fix GCC 10.2.0 -Og -fsanitize=undefined -Wmaybe-uninitialized · af40a2b4
      Marko Mäkelä authored
      For some reason, adding -fsanitize=undefined (cmake -DWITH_UBSAN=ON)
      to the compilation flags will cause even more warnings to be emitted.
      The warnings do look bogus, but the code can be simplified.
      af40a2b4
    • Marko Mäkelä's avatar
      Fix GCC 10.2.0 -Og -fsanitize=undefined -Wformat-overflow · 0448558a
      Marko Mäkelä authored
      For some reason, adding -fsanitize=undefined (cmake -DWITH_UBSAN=ON)
      to the compilation flags will cause even more warnings to be emitted.
      The warning was a bogus one:
      
      tests/mysql_client_test.c:8632:22: error: '%d' directive writing between
      1 and 11 bytes into a region of size 9 [-Werror=format-overflow=]
       8632 |     sprintf(field, "c%d int", i);
            |                      ^~
      tests/mysql_client_test.c:8632:20: note: directive argument
      in the range [-2147483648, 999]
      
      The warning does not take into account that the lower bound of the
      variable actually is 0. But, we can help the compiler and use an
      unsigned variable.
      0448558a
  11. 22 Sep, 2020 9 commits
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · d9d9c30b
      Marko Mäkelä authored
      d9d9c30b
    • Oleksandr Byelkin's avatar
      594c11ff
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 9d0ee2dc
      Marko Mäkelä authored
      9d0ee2dc
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · fde3d895
      Marko Mäkelä authored
      fde3d895
    • Marko Mäkelä's avatar
      MDEV-22939: Restore an AUTO_INCREMENT check · 78efa109
      Marko Mäkelä authored
      It turns out that we must check for DISCARD TABLESPACE both
      when the table is being rebuilt and when the AUTO_INCREMENT
      value of the table is being added.
      
      This was caught by the test innodb.alter_missing_tablespace.
      Somehow I failed to run all tests. Sorry!
      78efa109
    • Marko Mäkelä's avatar
      MDEV-22939 Server crashes in row_make_new_pathname() · 3eb81136
      Marko Mäkelä authored
      The statement ALTER TABLE...DISCARD TABLESPACE is problematic,
      because its designed purpose is to break the referential integrity
      of the data dictionary and make a table point to nowhere.
      
      ha_innobase::commit_inplace_alter_table(): Check whether the
      table has been discarded. (This is a bit late to check it, right
      before committing the change.) Previously, we performed this check
      only in a specific branch of the function commit_set_autoinc().
      
      Note: We intentionally allow non-rebuilding ALTER TABLE even if
      the tablespace has been discarded, to remain compatible with MySQL.
      (See the various tests with "wl5522" in the name, such as
      innodb.innodb-wl5522.)
      
      The test case would crash starting with 10.3 only, but it does not hurt
      to minimize the code and test difference between 10.2 and 10.3.
      3eb81136
    • Marko Mäkelä's avatar
      Make DISCARD TABLESPACE more robust · e5e83daf
      Marko Mäkelä authored
      dict_load_table_low(): Copy the 'discarded' flag to file_unreadable.
      This allows to avoid a potentially harmful call to dict_stats_init()
      in ha_innobase::open().
      e5e83daf
    • Marko Mäkelä's avatar
      MDEV-23776: Re-apply the fix and make the test more robust · 2af8f712
      Marko Mäkelä authored
      The test that was added in commit e05650e6
      would break a subsequent run of a test encryption.innodb-bad-key-change
      because some pages in the system tablespace would be encrypted with
      a different key.
      
      The failure was repeatable with the following invocation:
      
      ./mtr --no-reorder \
      encryption.create_or_replace,cbc \
      encryption.innodb-bad-key-change,cbc
      
      Because the crash was unrelated to the code changes that we reverted
      in commit eb38b1f7
      we can safely re-apply those fixes.
      2af8f712
    • Marko Mäkelä's avatar
      MDEV-23705 Assertion 'table->data_dir_path || !space' · 732cd7fd
      Marko Mäkelä authored
      After DISCARD TABLESPACE, the tablespace of a table will no longer
      exist, and dict_get_and_save_data_dir_path() would invoke
      dict_get_first_path() to read an entry from SYS_DATAFILES.
      For some reason, DISCARD TABLESPACE would not to remove the entry
      from there.
      
      dict_get_and_save_data_dir_path(): If the tablespace has been
      discarded, do not bother trying to read the name.
      
      Side note: The tables SYS_TABLESPACES and SYS_DATAFILES are
      redundant and subject to removal in MDEV-22343.
      732cd7fd