1. 23 Dec, 2020 1 commit
    • Marko Mäkelä's avatar
      Partially revert 7410ff43 · 097786c4
      Marko Mäkelä authored
      Remove the unused dbug_print_rec() functions because they break
      the clang build due to -Wreturn-stack-address
      097786c4
  2. 22 Dec, 2020 4 commits
    • Aleksey Midenkov's avatar
      MDEV-23446 UPDATE does not insert history row if the row is not changed · 9b38ed4c
      Aleksey Midenkov authored
      Add history row outside of compare_record() check. For TRX_ID
      versioning we have to fail can_compare_record to force InnoDB update
      which adds history row; and there in ha_innobase::update_row() is
      additional "row changed" check where we force history row anyway.
      9b38ed4c
    • Aleksey Midenkov's avatar
      MDEV-23644 Assertion on evaluating foreign referential action for... · 932ec586
      Aleksey Midenkov authored
      MDEV-23644 Assertion on evaluating foreign referential action for self-reference in system versioned table
      
      First part of the fix (row0mysql.cc) addresses external columns when adding history
      row on referential action. The full data must be retrieved before the
      row is inserted.
      
      Second part of the fix (the rest) avoids duplicate primary key error between
      the history row generated on referential action and the history row
      generated by SQL command. Both command and referential action can
      happen on same table since foreign key can be self-reference (parent
      and child tables are same). Moreover, the self-reference can refer
      multiple rows when the key is non-unique. In such case history is
      generated by referential action occured on first row but processed all
      rows by a matched key. The second round is when the next row is
      processed by a command but history already exists. In such case we
      check TRX_ID of existing history row and if it is the same we assume
      the above situation and skip adding one more history row or failing
      the command.
      932ec586
    • Aleksey Midenkov's avatar
      MDEV-21138 Assertion `col->ord_part' or `f.col->ord_part' failed in row_build_index_entry_low · 7410ff43
      Aleksey Midenkov authored
      First part (row0mysql.cc) fixes ins_node_set_new_row() usage workflow
      as it is designed to operate on empty row (see row_get_prebuilt_insert_row()
      for example).
      
      Second part (row0ins.cc) fixes duplicate key error in FTS_DOC_ID_INDEX
      since history rows must not generate entries in that index. We detect
      FTS_DOC_ID_INDEX by a number of attributes and skip it if the row is
      historical.
      
      Misc fixes:
      
      row_build_index_entry_low() does not accept non-NULL tuple
      for FTS index (subject assertion fails), assertion (index->type !=
      DICT_FTS) adds code understanding.
      
      Now as historical_row is copied in row_update_vers_insert() there is
      no need to copy the row twice: ROW_COPY_POINTERS is used to build
      historical_row initially.
      
      dbug_print_rec() debug functions.
      7410ff43
    • Aleksey Midenkov's avatar
      MDEV-22178 Assertion `info->alias.str' failed in... · d4258f3a
      Aleksey Midenkov authored
      MDEV-22178 Assertion `info->alias.str' failed in partition_info::check_partition_info instead of ER_VERS_WRONG_PARTS
      
      Assign create_info->alias for ALTER TABLE since it is NULL and later
      accessed for printing error message.
      d4258f3a
  3. 16 Dec, 2020 1 commit
  4. 15 Dec, 2020 2 commits
  5. 14 Dec, 2020 1 commit
  6. 12 Dec, 2020 1 commit
  7. 11 Dec, 2020 1 commit
  8. 09 Dec, 2020 1 commit
    • Oleksandr Byelkin's avatar
      MDEV-19273: Server crash in MDL_ticket::has_stronger_or_equal_type or... · 86fc37b6
      Oleksandr Byelkin authored
      MDEV-19273: Server crash in MDL_ticket::has_stronger_or_equal_type or Assertion `thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->db.str, table->table_name.str, MDL_SHARED)' failed in mysql_rm_table_no_locks
      
      Early report error in case of DROP SEQUENCE <non-sequence>
      
      Do not use error variable for other purposes except error.
      86fc37b6
  9. 07 Dec, 2020 2 commits
  10. 02 Dec, 2020 1 commit
  11. 01 Dec, 2020 5 commits
    • Vlad Lesin's avatar
      MDEV-22929 MariaBackup option to report and/or continue when corruption is encountered · e30a05f4
      Vlad Lesin authored
      Post-push Windows compilation errors fix.
      e30a05f4
    • Monty's avatar
      After merge fixes · 7edfed63
      Monty authored
      Change thd->mdl_context.release_transactional_locks() to
      thd->mdl_release_transactional_locks()
      7edfed63
    • Marko Mäkelä's avatar
      MDEV-24323 Crash on recovery after kill during instant ADD COLUMN · 73f34336
      Marko Mäkelä authored
      row_undo_ins_parse_undo_rec(): Do not try to read non-existing
      virtual column information for the metadata record.
      73f34336
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 81ab9ea6
      Marko Mäkelä authored
      81ab9ea6
    • Vlad Lesin's avatar
      MDEV-22929 MariaBackup option to report and/or continue when corruption is encountered · e6b3e38d
      Vlad Lesin authored
      The new option --log-innodb-page-corruption is introduced.
      
      When this option is set, backup is not interrupted if innodb corrupted
      page is detected. Instead it logs all found corrupted pages in
      innodb_corrupted_pages file in backup directory and finishes with error.
      
      For incremental backup corrupted pages are also copied to .delta file,
      because we can't do LSN check for such pages during backup,
      innodb_corrupted_pages will also be created in incremental backup
      directory.
      
      During --prepare, corrupted pages list is read from the file just after
      redo log is applied, and each page from the list is checked if it is allocated
      in it's tablespace or not. If it is not allocated, then it is zeroed out,
      flushed to the tablespace and removed from the list. If all pages are removed
      from the list, then --prepare is finished successfully and
      innodb_corrupted_pages file is removed from backup directory. Otherwise
      --prepare is finished with error message and innodb_corrupted_pages contains
      the list of the pages, which are detected as corrupted during backup, and are
      allocated in their tablespaces, what means backup directory contains corrupted
      innodb pages, and backup can not be considered as consistent.
      
      For incremental --prepare corrupted pages from .delta files are applied
      to the base backup, innodb_corrupted_pages is read from both base in
      incremental directories, and the same action is proceded for corrupted
      pages list as for full --prepare. innodb_corrupted_pages file is
      modified or removed only in base directory.
      
      If DDL happens during backup, it is also processed at the end of backup
      to have correct tablespace names in innodb_corrupted_pages.
      e6b3e38d
  12. 30 Nov, 2020 4 commits
    • Monty's avatar
      MDEV 15532 Assertion `!log->same_pk' failed in row_log_table_apply_delete · 828471cb
      Monty authored
      The reason for the failure is that
      thd->mdl_context.release_transactional_locks()
      was called after commit & rollback even in cases where the current
      transaction is still active.
      
      For 10.2, 10.3 and 10.4 the fix is simple:
      - Replace all calls to thd->mdl_context.release_transactional_locks() with
        thd->release_transactional_locks(). The thd function will only call
        the mdl_context function if there are no active transactional locks.
        In 10.6 we will better fix where we will change the return value for
        some trans_xxx() functions to indicate if transaction did close the
        transaction or not. This will avoid the need of the indirect call.
      
      Other things:
      - trans_xa_commit() and trans_xa_rollback() will automatically
        call release_transactional_locks() if the transaction is closed.
      - We can't do that for the other functions as the caller of many of these
        are doing additional work (like close_thread_tables) before calling
        release_transactional_locks().
      - Added missing abort_result_set() and missing DBUG_RETURN in
        select_create::send_eof()
      - Fixed wrong indentation in injector::transaction::commit()
      828471cb
    • Monty's avatar
      Fixed maria.create test · c5375764
      Monty authored
      c5375764
    • Monty's avatar
    • Varun Gupta's avatar
      MDEV-21265: IN predicate conversion to IN subquery should be allowed for a... · b4379df5
      Varun Gupta authored
      MDEV-21265: IN predicate conversion to IN subquery should be allowed for a broader set of datatype comparison
      
      Allow materialization strategy when collations on the
      inner and outer sides of an IN subquery are the same and the
      character set of the inner side is a proper subset of the character
      set on the outer side.
      This allows conversion from utf8mb3 to utf8mb4
      as the former is a subset of the later.
      This is only allowed when IN predicate is converted to an IN subquery
      
      Backported part of the patch (d6a00d9b) of MDEV-17905.
      b4379df5
  13. 26 Nov, 2020 1 commit
  14. 25 Nov, 2020 5 commits
  15. 24 Nov, 2020 1 commit
  16. 23 Nov, 2020 3 commits
  17. 19 Nov, 2020 1 commit
    • Igor Babaev's avatar
      MDEV-19179 Regression: SELECT ... UNION ... with inconsistent column names fails · 1248c654
      Igor Babaev authored
      A bogus error message was issued when a condition was pushed into a
      materialized derived table or view specified as union of selects with
      aggregation when the corresponding columns of the selects had different
      names. This happened because the expression pushed into having clauses of
      the selects was adjusted for the names of the first select of the union.
      The easiest solution was to rename the columns of the other selects to be
      name compatible with the columns of the first select.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      1248c654
  18. 18 Nov, 2020 2 commits
  19. 17 Nov, 2020 3 commits