1. 23 Dec, 2020 2 commits
  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. 04 Dec, 2020 1 commit
    • Marko Mäkelä's avatar
      MDEV-24340 Unique final message of InnoDB during shutdown · 1eb59c30
      Marko Mäkelä authored
      innobase_space_shutdown(): Remove. We want this step to be executed
      before the message "InnoDB: Shutdown completed; log sequence number "
      is output by innodb_shutdown(). It used to be executed after that step.
      
      innodb_shutdown(): Duplicate the code that used to live in
      innobase_space_shutdown().
      
      innobase_init_abort(): Merge with innobase_space_shutdown().
      1eb59c30
  11. 02 Dec, 2020 1 commit
  12. 01 Dec, 2020 6 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
    • Alexey Botchkov's avatar
      MDEV-24318 server_audit doesn't respect filters for PROXY_CONNECT · 178d32f0
      Alexey Botchkov authored
      events.
      
      The log line should be added behind the filters.
      178d32f0
    • 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
  13. 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
  14. 26 Nov, 2020 1 commit
  15. 25 Nov, 2020 5 commits
  16. 24 Nov, 2020 1 commit
  17. 23 Nov, 2020 3 commits
  18. 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
  19. 18 Nov, 2020 2 commits