1. 27 Jun, 2023 2 commits
  2. 26 Jun, 2023 2 commits
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 49308383
      Marko Mäkelä authored
      49308383
    • Rucha Deodhar's avatar
      MDEV-28915: mysql_upgrade fails due to old_mode="", with "Cannot load from · 14275b47
      Rucha Deodhar authored
      mysql.proc. The table is probably corrupted"
      
      Analysis: When mysql_upgrade runs statements for upgrade, characterset is
      converted to utf8mb4 because server starts with old_mode that interprets
      utf8 to utf8mb4, but mysql.proc table has "utf8mb3" as hardcoded, so
      it crashes with corrupted table.
      
      Fix: Changed Table_check_intact::check() definition to allow both
      utf8mb3 and utf8mb4 by checking prefix and changing the upgrade scripts
      to explicitly use utf8mb3
      14275b47
  3. 25 Jun, 2023 7 commits
  4. 21 Jun, 2023 1 commit
    • Brandon Nesterenko's avatar
      MDEV-29894: Calling a function from a different database in a slave side trigger crashes · c2d44ecb
      Brandon Nesterenko authored
      When opening and locking tables, if triggers will be invoked in a
      separate database, thd->set_db() is invoked, thus freeeing the memory
      and headers which thd->db had previously pointed to. In row based
      replication, the event execution logic initializes thd->db to point
      to the database which the event targets, which is owned by the
      corresponding table share (introduced in d9898c9a for MDEV-7409).
      The problem then, is that during the table opening and locking
      process for a row event, memory which belongs to the table share
      would be freed, which is not valid.
      
      This patch replaces the thd->reset_db() calls to thd->set_db(),
      which copies-by-value, rather than by reference. Then when the
      memory is freed, our copy of memory is freed, rather than memory
      which belongs to a table share.
      
      Notes:
        1. The call to change thd->db now happens on a higher-level, in
      Rows_log_event::do_apply_event() rather than ::do_exec_row(), in the
      call stack. This is because do_exec_row() is called within a loop,
      and each invocation would redundantly set and unset the db to the
      same value.
        2. thd->set_db() is only used if triggers are to be invoked, as
      there is no vulnerability in the non-trigger case, and copying
      memory would be an unnecessary inefficiency.
      
      Reviewed By:
      ============
      Andrei Elkin <andrei.elkin@mariadb.com>
      c2d44ecb
  5. 20 Jun, 2023 1 commit
  6. 16 Jun, 2023 1 commit
  7. 15 Jun, 2023 1 commit
  8. 14 Jun, 2023 1 commit
    • Sergei Petrunia's avatar
      MDEV-31479: Inconsistency between MRR and SQL layer costs can cause poor query plan · 0e2e70c4
      Sergei Petrunia authored
      (Same as
      TODO-3938: best_access_path shows negative costs for mrr=on)
      
      best_access_path() assumes that quick select cost includes
      (quick->rows/TIME_FOR_COMPARE) as a cost of checking the attached
      part of the WHERE condition.
      
      It calls adjust_quick_cost() to subtract addition from quick's cost.
      
      The problem was that DS-MRR cost formula didn't include this cost.
      For very large tables, adjust_quick_cost() would produce a negative
      cost which would cause assert in debug build or bad query plan choice
      in release builds.
      Approved-by: default avatarMonty <monty@mariadb.org>
      0e2e70c4
  9. 09 Jun, 2023 2 commits
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-31442 page_cleaner thread aborts while releasing the tablespace · 841e905f
      Thirunarayanan Balathandayuthapani authored
      After further I/O on a tablespace has been stopped
      (for example due to DROP TABLE or an operation that
      rebuilds a table), page cleaner thread tries to
      flush the pending writes for the tablespace and
      releases the tablespace reference even though it was not
      acquired.
      
      fil_space_t::flush(): Don't release the tablespace when it is
      being stopped and closed
      
      Thanks to Marko Mäkelä for suggesting this patch.
      841e905f
    • Tuukka Pasanen's avatar
      MDEV-31423: Make sure that datadir is available with SySV-init script · 8171f9da
      Tuukka Pasanen authored
      Commit fixes Debian SySV-init script fail:
        /etc/init.d/mariadb: line 90: [: : integer expression expected
      which happens if datadir is not changed in configuration which
      makes it invisible when printing MariaDB config defaults.
      
      Commit makes sure that there is some value if nothing else if in hand
      use default /usr/lib/mysql or fail with correct error message if
      directory is not present
      8171f9da
  10. 08 Jun, 2023 8 commits
  11. 07 Jun, 2023 5 commits
  12. 05 Jun, 2023 4 commits
  13. 03 Jun, 2023 5 commits