1. 12 Dec, 2018 7 commits
  2. 11 Dec, 2018 1 commit
  3. 10 Dec, 2018 5 commits
    • Vladislav Vaintroub's avatar
    • Varun Gupta's avatar
      MDEV-17778: Alter table leads to a truncation warning with ANALYZE command · 8aef7f2b
      Varun Gupta authored
      Alter statement changed the THD structure by setting the value to FIELD_CHECK_WARN
      and then not resetting it back. This led ANALYZE to throw a warning which previously
      it didn't.
      8aef7f2b
    • Marko Mäkelä's avatar
      MDEV-17938: ALTER TABLE error handling accesses freed memory · a7251634
      Marko Mäkelä authored
      This regression was introduced in MDEV-11369 instant ADD COLUMN.
      
      prepare_inplace_alter_table_dict(): Avoid dereferencing ctx->new_table
      after row_create_table_for_mysql() returns a failure code, because
      it will have freed the memory.
      a7251634
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 1d18665e
      Marko Mäkelä authored
      1d18665e
    • Marko Mäkelä's avatar
      MDEV-17938 ALTER TABLE reports ER_TABLESPACE_EXISTS after failed ALTER TABLE · 0d7cf06a
      Marko Mäkelä authored
      There was a race condition in the error handling of ALTER TABLE when
      the table contains FULLTEXT INDEX.
      
      During the error handling of an erroneous ALTER TABLE statement,
      when InnoDB would drop the internally created tables for FULLTEXT INDEX,
      it could happen that one of the hidden tables was being concurrently
      accessed by a background thread. Because of this, InnoDB would defer
      the drop operation to the background.
      
      However, related to MDEV-13564 backup-safe TRUNCATE TABLE and its
      prerequisite MDEV-14585, we had to make the background drop table queue
      crash-safe by renaming the table to a temporary name before enqueueing it.
      This renaming was introduced in a follow-up of the MDEV-13407 fix.
      As part of this rename operation, we were unnecessarily parsing the
      current SQL statement, because the same rename operation could also be
      executed as part of ALTER TABLE via ha_innobase::rename_table().
      
      If an ALTER TABLE statement was being refused due to incorrectly formed
      FOREIGN KEY constraint, then it could happen that the renaming of the hidden
      internal tables for FULLTEXT INDEX could also fail, triggering a host of
      error log messages, and causing a subsequent table-rebuilding ALTER TABLE
      operation to fail due to the tablespace already existing.
      
      innobase_rename_table(), row_rename_table_for_mysql(): Add the parameter
      use_fk for suppressing the parsing of FOREIGN KEY constraints. It
      will only be passed as use_fk=true by ha_innobase::rename_table(),
      which can be invoked as part of ALTER TABLE...ALGORITHM=COPY.
      0d7cf06a
  4. 08 Dec, 2018 1 commit
  5. 07 Dec, 2018 10 commits
  6. 06 Dec, 2018 5 commits
  7. 05 Dec, 2018 1 commit
  8. 04 Dec, 2018 2 commits
  9. 03 Dec, 2018 1 commit
  10. 02 Dec, 2018 1 commit
  11. 01 Dec, 2018 1 commit
    • Igor Babaev's avatar
      MDEV-17871 Crash when running explain with CTE · 46960365
      Igor Babaev authored
      When the with clause of a query contains a recursive CTE that is not used
      then processing of EXPLAIN for this query does not require optimization
      of the unit specifying this CTE. In this case if 'derived' is the
      TABLE_LIST object created for this CTE then derived->derived_result is NULL
      and any assignment to derived->derived_result->table causes a crash.
      After fixing this problem in the code of st_select_lex_unit::prepare()
      EXPLAIN for such a query worked without crashes. Yet an execution
      plan for the recursive CTE appeared there. The cause of this problem was
      an incorrect condition used in JOIN::save_explain_data_intern() that
      determined whether CTE was to be optimized or not. A similar condition was
      used in select_describe() and this patch has corrected it as well.
      46960365
  12. 30 Nov, 2018 4 commits
    • Marko Mäkelä's avatar
      Re-disable a failing test · 3e5162d8
      Marko Mäkelä authored
      3e5162d8
    • Marko Mäkelä's avatar
      MDEV-17881: Fix a debug assertion · 95f3c142
      Marko Mäkelä authored
      In 10.3, rec_is_metadata() takes a pointer, while in 10.4 it
      takes a reference as a parameter. I ported this patch from
      10.4 to 10.3, and then only ran a release build, not debug build.
      95f3c142
    • Marko Mäkelä's avatar
      MDEV-17881 Assertion failure in cmp_dtuple_rec_with_match_bytes after instant ADD COLUMN · e46a3aa4
      Marko Mäkelä authored
      The special flag REC_INFO_MIN_REC_FLAG used to be only set on the
      first record in the leftmost node pointer page of each level of the tree.
      It was never set on leaf pages.
      
      MDEV-11369 Instant ADD COLUMN in MariaDB Server 10.3 repurposed the flag
      to identify a hidden metadata record, which is stored in the first record
      on the leftmost leaf page.
      
      If the adaptive hash index points to records in the leftmost leaf page
      after instant ALTER TABLE, we would have such a metadata record in the
      table, an assertion could fail when trying to validate the index record.
      In a release build, we might wrongly qualify the hidden metadata record
      and thus return garbage results.
      
      cmp_dtuple_rec_with_match_bytes(): If the REC_INFO_MIN_REC_FLAG is
      set on the record, assert that this is the first record on the
      leftmost page and that the record is a metadata record, and finally
      return 1, because by definition, anything is greater than the
      minimum record.
      e46a3aa4
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 0abd2766
      Marko Mäkelä authored
      Also, related to MDEV-15522, MDEV-17304, MDEV-17835,
      remove the Galera xtrabackup tests, because xtrabackup never worked
      with MariaDB Server 10.3 due to InnoDB redo log format changes.
      0abd2766
  13. 29 Nov, 2018 1 commit