1. 10 Aug, 2023 5 commits
    • Oleksandr Byelkin's avatar
      Merge branch '10.9' into 10.10 · cce155cc
      Oleksandr Byelkin authored
      cce155cc
    • Oleksandr Byelkin's avatar
      Merge branch '10.6' into 10.9 · 3e0009dc
      Oleksandr Byelkin authored
      3e0009dc
    • Oleksandr Byelkin's avatar
      Merge branch '10.5' into 10.6 · 0d16eb35
      Oleksandr Byelkin authored
      0d16eb35
    • Oleksandr Byelkin's avatar
      Merge branch '10.4' into 10.5 · 7e650253
      Oleksandr Byelkin authored
      7e650253
    • Monty's avatar
      MDEV-31893 Valgrind reports issues in main.join_cache_notasan · 2aea9387
      Monty authored
      This is also related to
      MDEV-31348 Assertion `last_key_entry >= end_pos' failed in virtual bool
                 JOIN_CACHE_HASHED::put_record()
      
      Valgrind exposed a problem with the join_cache for hash joins:
      =25636== Conditional jump or move depends on uninitialised value(s)
      ==25636== at 0xA8FF4E: JOIN_CACHE_HASHED::init_hash_table()
                (sql_join_cache.cc:2901)
      
      The reason for this was that avg_record_length contained a random value
      if one had used SET optimizer_switch='optimize_join_buffer_size=off'.
      
      This causes either 'random size' memory to be allocated (up to
      join_buffer_size) which can increase memory usage or, if avg_record_length
      is less than the row size, memory overwrites in thd->mem_root, which is
      bad.
      
      Fixed by setting avg_record_length in JOIN_CACHE_HASHED::init()
      before it's used.
      
      There is no test case for MDEV-31893 as valgrind of join_cache_notasan
      checks that.
      I added a test case for MDEV-31348.
      2aea9387
  2. 09 Aug, 2023 3 commits
    • Oleksandr Byelkin's avatar
      Merge branch '10.9' into 10.10 · 4e2c67a6
      Oleksandr Byelkin authored
      4e2c67a6
    • Oleksandr Byelkin's avatar
      Merge branch '10.6' into 10.9 · f692b2b6
      Oleksandr Byelkin authored
      # Conflicts:
      #	mysql-test/main/sp.result
      #	mysql-test/main/sp.test
      f692b2b6
    • Sergei Petrunia's avatar
      MDEV-31877: ASAN errors in Exec_time_tracker::get_cycles with innodb slow log verbosity · 8d210fc2
      Sergei Petrunia authored
      Remove redundant delete_explain_query() calls in
      
      sp_instr_set::exec_core(), sp_instr_set_row_field::exec_core(),
      sp_instr_set_row_field_by_name::exec_core().
      
      These calls are made before the SP instruction's tables are
      "closed" by close_thread_tables() call.
      
      When we call close_thread_tables() after that, we no longer
      can collect engine's counter variables, as they use the data
      structures that are located in the Explain Data Structures.
      
      Also, these delete_explain_query() calls are redundant, as
      sp_lex_keeper::reset_lex_and_exec_core() has another
      delete_explain_query() call, which is located in the right
      location after the close_thread_tables() call.
      8d210fc2
  3. 08 Aug, 2023 6 commits
  4. 07 Aug, 2023 3 commits
  5. 06 Aug, 2023 1 commit
  6. 05 Aug, 2023 1 commit
  7. 04 Aug, 2023 8 commits
  8. 03 Aug, 2023 1 commit
    • Oleg Smirnov's avatar
      MDEV-31743 Server crash in store_length, assertion failure in... · 8e8c020f
      Oleg Smirnov authored
      MDEV-31743 Server crash in store_length, assertion failure in Type_handler_string_result::sort_length
      
      After MDEV-21580 the truncation of SORT_FIELD::length
        set_if_smaller(sortorder->length, thd->variables.max_sort_length)
      
      became conditional:
        if (is_variable_sized())
          set_if_smaller(length, thd->variables.max_sort_length)
      
      To provide correct functioning of is_variable_sized() SORT_FIELD::type
      must be set properly. This commit adds the necessary initialization
      of SORT_FIELD::type to JOIN_TAB::remove_duplicates() as it is done
      in filesort's sortlength() function.
      
      DBUG_ASSERT is added to sortlength() just in case to prevent
      a possible uint32 overflow
      8e8c020f
  9. 02 Aug, 2023 4 commits
    • Marko Mäkelä's avatar
      MDEV-31827 InnoDB multi-batch recovery stops prematurely · a89527e1
      Marko Mäkelä authored
      recv_scan_log(): On recv_sys_t::PREMATURE_EOF, keep reading more log
      if recv_sys.lsn < recv_sys.scanned_lsn.
      
      recv_recovery_from_checkpoint_start(): Add a safety check to abort
      crash recovery if recv_sys.lsn is not recv_sys.scanned_lsn.
      
      This fixes a serious database corruption bug that was introduced by
      commit 2f9e2647 (MDEV-29911).
      a89527e1
    • Sergei Golubchik's avatar
      MDEV-31822 ALTER TABLE ENGINE=x started failing instead of producing warning... · 61acb436
      Sergei Golubchik authored
      MDEV-31822 ALTER TABLE ENGINE=x started failing instead of producing warning on unsupported TRANSACTIONAL=1
      
      make TRANSACTIONAL table option behave similar to other engine-defined
      table options. If the engine doesn't suport it:
      * if specified expicitly in CREATE or ALTER - it's ER_UNKNOWN_OPTION
      * an error or a warning depending on sql_mode IGNORE_BAD_TABLE_OPTIONS
      * in ALTER TABLE from the engine that suppors it to the engine that
        doesn't - silently preserved (no warning)
      * it is commented out in SHOW CREATE unless IGNORE_BAD_TABLE_OPTIONS
      61acb436
    • Sergei Golubchik's avatar
      MDEV-18114 Foreign Key Constraint actions don't affect Virtual Column · da09ae05
      Sergei Golubchik authored
      * invoke check_expression() for all vcol_info's in
        mysql_prepare_create_table() to check for FK CASCADE
      * also check for SET NULL and SET DEFAULT
      * to check against existing FKs when a vcol is added in ALTER TABLE,
        old FKs must be added to the new_key_list just like other indexes are
      * check columns recursively, if vcol1 references vcol2,
        flags of vcol2 must be taken into account
      * remove check_table_name_processor(), put that logic under
        check_vcol_func_processor() to avoid walking the tree twice
      da09ae05
    • Marko Mäkelä's avatar
      MDEV-31791: Recovery on memory-mapped log occasionally fails · 8760fe11
      Marko Mäkelä authored
      recv_ring::copy_if_needed(): If the record wraps around the
      memory-mapped ib_logfile0, do copy it also if len==0
      (the record consists only of a header, like FREE_PAGE and INIT_PAGE
      records do).
      
      recv_sys_t::parse(): Invoke recv_ring::copy_if_needed() for INIT_PAGE
      and FREE_PAGE records, so that if these records wrap around the
      memory-mapped ib_logfile0, they will be correctly copied to
      recv_sys.pages.
      
      Together with commit 0d175968 (MDEV-31354)
      this fixes occasional failures of the test innodb.recovery_memory.
      8760fe11
  10. 01 Aug, 2023 8 commits