1. 12 May, 2022 3 commits
    • Monty's avatar
      MDEV-28073 Query performance degradation in newer MariaDB versions when using many tables · b729896d
      Monty authored
      The issue was that best_extension_by_limited_search() had to go through
      too many plans with the same cost as there where many EQ_REF tables.
      
      Fixed by shortcutting EQ_REF (AND REF) when the result only contains one
      row. This got the optimization time down from hours to sub seconds.
      
      The only known downside with this patch is that in some cases a table
      with ref and 1 record may be used before on EQ_REF table. The faster
      optimzation phase should compensate for this.
      b729896d
    • Monty's avatar
      Fixed bug in alter_table_lock.result · f7dd8799
      Monty authored
      Before this change the test could abort with ER_OPTION_PREVENTS_STATEMENT
      f7dd8799
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · daa2680c
      Marko Mäkelä authored
      daa2680c
  2. 11 May, 2022 4 commits
    • Vlad Lesin's avatar
      MDEV-28473 field_ref_zero is not initialized in xtrabackup_prepare_func() · 3fabdc3c
      Vlad Lesin authored
      The solution is to initialize field_ref_zero in main_low() before
      xtrabackup_backup_func() and xtrabackup_prepare_func() calls.
      3fabdc3c
    • Alexander Barkov's avatar
      MDEV-28446 mariabackup prepare fails for incrementals if a new schema is... · 7da0f30c
      Alexander Barkov authored
      MDEV-28446 mariabackup prepare fails for incrementals if a new schema is created after full backup is taken
      
      Adding a 10.6 specific test
      7da0f30c
    • Sergei Golubchik's avatar
      fix galera.MDEV-26575 failures · a917be3e
      Sergei Golubchik authored
      a917be3e
    • Daniel Black's avatar
      MDEV-28534: clang-12 compile warnings · 09ee95e3
      Daniel Black authored
      Errors where:
      
      /buildbot/amd64-ubuntu-2004-msan/build/sql/item.h:6478:12: error: 'val_datetime_packed' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
        longlong val_datetime_packed(THD *thd)
                 ^
      /buildbot/amd64-ubuntu-2004-msan/build/sql/item.h:3501:12: note: overridden virtual function is here
        longlong val_datetime_packed(THD *thd) override;
                 ^
      /buildbot/amd64-ubuntu-2004-msan/build/sql/item.h:6480:12: error: 'val_time_packed' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
        longlong val_time_packed(THD *thd)
                 ^
      /buildbot/amd64-ubuntu-2004-msan/build/sql/item.h:3502:12: note: overridden virtual function is here
        longlong val_time_packed(THD *thd) override;
                 ^
      09ee95e3
  3. 10 May, 2022 2 commits
  4. 09 May, 2022 4 commits
  5. 08 May, 2022 4 commits
  6. 07 May, 2022 2 commits
  7. 06 May, 2022 12 commits
    • Daniel Black's avatar
      MDEV-27816: Set sql_mode before DROP IF EXISTS already (postfix) · 0db27eff
      Daniel Black authored
      Test compat/oracle.sp-package-mysqldump needed re-record.
      0db27eff
    • Andrei's avatar
      MDEV-28310 Missing binlog data for INSERT .. ON DUPLICATE KEY UPDATE · a5dc12ee
      Andrei authored
      MDEV-21810 MBR: Unexpected "Unsafe statement" warning for unsafe IODKU
      
      MDEV-17614 fixes to replication unsafety for INSERT ON DUP KEY UPDATE
      on two or more unique key table left a flaw. The fixes checked the
      safety condition per each inserted record with the idea to catch a user-created
      value to an autoincrement column and when that succeeds the autoincrement column
      would become the source of unsafety too.
      It was not expected that after a duplicate error the next record's
      write_set may become different and the unsafe decision for that
      specific record will be computed to screw the Query's binlogging
      state and when @@binlog_format is MIXED nothing gets bin-logged.
      
      This case has been already fixed in 10.5.2 by 91ab42a8 that
      relocated/optimized THD::decide_logging_format_low() out of the record insert
      loop. The safety decision is computed once and at the right time.
      Pertinent parts of the commit are cherry-picked.
      
      Also a spurious warning about unsafety is removed when MIXED
      @@binlog_format; original MDEV-17614 test result corrected.
      The original test of MDEV-17614 is extended and made more readable.
      a5dc12ee
    • Marko Mäkelä's avatar
    • Daniel Black's avatar
      MDEV-4875 Can't restore a mysqldump if --add-drop-database meets general_log · 221ced92
      Daniel Black authored
      or slow query log when the log_output=TABLE.
      
      When this happens, we temporary disable by changing log_output until
      we've created the general_log and slow_log tables again.
      
      Move </database> in xml mode until after the transaction_registry.
      
      General_log and slow_log tables where moved to be first to be dumped so
      that the disabling of the general/slow queries is minimal.
      221ced92
    • Hartmut Holzgraefe's avatar
      MDEV-27816 Set sql_mode before DROP IF EXISTS already · 9fe3bc2a
      Hartmut Holzgraefe authored
      Previously the correct SQL mode for a stored routine or
      package was only set before doing the CREATE part, this
      worked out for PROCEDUREs and FUNCTIONs, but with ORACLE
      mode specific PACKAGEs the DROP also only works in ORACLE
      mode.
      
      Moving the setting of the sql_mode a few lines up to happen
      right before the DROP statement is writen fixes this.
      9fe3bc2a
    • Marko Mäkelä's avatar
      MDEV-28484 InnoDB encryption key rotation is not being marked completed · f67d65e3
      Marko Mäkelä authored
      fil_crypt_flush_space(): Correct a condition that was refactored
      incorrectly in commit aaef2e1d
      f67d65e3
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 57a9626f
      Marko Mäkelä authored
      57a9626f
    • Oleksandr Byelkin's avatar
      MDEV-28402 ASAN heap-use-after-free in create_tmp_table, Assertion `l_offset... · 141ab971
      Oleksandr Byelkin authored
      MDEV-28402 ASAN heap-use-after-free in create_tmp_table, Assertion `l_offset >= 0 && table->s->rec_buff_length - l_offset > 0'
      
      Make default() function follow Item_field and use get_tmp_table_item() for
      change_to_use_tmp_fields().
      141ab971
    • Marko Mäkelä's avatar
      fd9e733a
    • Sergei Petrunia's avatar
      624cb973
    • Marko Mäkelä's avatar
      MDEV-28478: INSERT into SPATIAL INDEX in TEMPORARY table writes log · 26d46234
      Marko Mäkelä authored
      This is based on commit 20ae4816
      with some adjustments for MDEV-12353.
      
      row_ins_sec_index_entry_low(): If a separate mini-transaction is
      needed to adjust the minimum bounding rectangle (MBR) in the parent
      page, we must disable redo logging if the table is a temporary table.
      For temporary tables, no log is supposed to be written, because
      the temporary tablespace will be reinitialized on server restart.
      
      rtr_update_mbr_field(), rtr_merge_and_update_mbr(): Changed the return
      type to void and removed unreachable code. In older versions, these
      used to return a different value for temporary tables.
      
      page_id_t: Add constexpr to most member functions.
      
      mtr_t::log_write(): Catch log writes to invalid tablespaces
      so that the test case would crash without the fix to
      row_ins_sec_index_entry_low().
      26d46234
    • Marko Mäkelä's avatar
      MDEV-28478: INSERT into SPATIAL INDEX in TEMPORARY table writes log · 20ae4816
      Marko Mäkelä authored
      row_ins_sec_index_entry_low(): If a separate mini-transaction is
      needed to adjust the minimum bounding rectangle (MBR) in the parent
      page, we must disable redo logging if the table is a temporary table.
      For temporary tables, no log is supposed to be written, because
      the temporary tablespace will be reinitialized on server restart.
      
      rtr_update_mbr_field(): Plug a memory leak.
      20ae4816
  8. 05 May, 2022 5 commits
  9. 04 May, 2022 4 commits
    • Sergei Golubchik's avatar
      test fixes for FreeBSD · 53193599
      Sergei Golubchik authored
      * FreeBSD returns errno 31 (EMLINK, Too many links),
        not 40 (ELOOP, Too many levels of symbolic links)
      * (`mysqlbinlog|mysql`) was just crazy, why did it ever work?
      * socket_ipv6.inc check (that checked whether ipv6 is supported)
        only worked correctly when ipv6 was supported
      * perfschema.socket_summary_by_instance was changing global variables
        and then skip-ing the test (because on missing ipv6)
      53193599
    • Anel Husakovic's avatar
      MDEV-28391: table_exists procedure fails when arguments contain escaped... · 06a4193c
      Anel Husakovic authored
      MDEV-28391: table_exists procedure fails when arguments contain escaped backticks as an quoted identifiers
      
      - When arguments to the procedure contain quote in the name, procedure fails with parsing error.
        The reason was because additional quoting is done when testing TEMPORARY table with the same name.
      - Reviewed by: <wlad@mariadb.com>
      06a4193c
    • Sergei Petrunia's avatar
      MDEV-19398: Assertion `item1->type() == Item::FIELD_ITEM ... · ba4927e5
      Sergei Petrunia authored
      Window Functions code tries to minimize the number of times it
      needs to sort the select's resultset by finding "compatible"
      OVER (PARTITION BY ... ORDER BY ...) clauses.
      
      This employs compare_order_elements(). That function assumed that
      the order expressions are Item_field-derived objects (that refer
      to a temp.table). But this is not always the case: one can
      construct queries order expressions are arbitrary item expressions.
      
      Add handling for such expressions: sort them according to the window
      specification they appeared in.
      This means we cannot detect that two compatible PARTITION BY clauses
      that use expressions can share the sorting step.
      But at least we won't crash.
      ba4927e5
    • Vlad Lesin's avatar
      MDEV-17843 Assertion `page_rec_is_leaf(rec)' failed in lock_rec_queue_validate... · 2c381d8c
      Vlad Lesin authored
      MDEV-17843 Assertion `page_rec_is_leaf(rec)' failed in lock_rec_queue_validate upon SHOW ENGINE INNODB STATUS
      
      lock_validate() accumulates page ids under locked lock_sys->mutex, then
      releases the latch, and invokes lock_rec_block_validate() for each page.
      Some other thread has ability to add/remove locks and change pages
      between releasing the latch in lock_validate() and acquiring it in
      lock_rec_validate_page().
      
      lock_rec_validate_page() can invoke lock_rec_queue_validate() for
      non-locked supremum, what can cause ut_ad(page_rec_is_leaf(rec)) failure
      in lock_rec_queue_validate().
      
      The fix is to invoke lock_rec_queue_validate() only for locked records
      in lock_rec_validate_page().
      
      The error message in lock_rec_block_validate() is not necessary as
      BUF_GET_POSSIBLY_FREED mode is used to get block from buffer pool, and
      this is not error if a block was evicted.
      
      The test case would require new debug sync point. I think it's not
      necessary as the fixed code is debug-only.
      2c381d8c