1. 05 Aug, 2021 2 commits
    • Aleksey Midenkov's avatar
      MDEV-18734 ASAN heap-use-after-free upon sorting by blob column from partitioned table · 160d97a4
      Aleksey Midenkov authored
      ha_partition stores records in array of m_ordered_rec_buffer and uses
      it for prio queue in ordered index scan. When the records are restored
      from the array the blob buffers may be already freed or rewritten.
      
      The solution is to take temporary ownership of cached blob buffers via
      String::swap(). When the record is restored from m_ordered_rec_buffer
      the ownership is returned to table fields.
      
      Cleanups:
      
      init_record_priority_queue(): removed needless !m_ordered_rec_buffer
      check as there is same assertion few lines before.
      
      dbug_print_row() for arbitrary row pointer
      160d97a4
    • Daniel Bartholomew's avatar
      bump the VERSION · b8deb028
      Daniel Bartholomew authored
      b8deb028
  2. 03 Aug, 2021 1 commit
    • Sergei Golubchik's avatar
      cleanup: specifying plugin dependencies in CMakeLists.txt · 175c9fe1
      Sergei Golubchik authored
      1. rename option DEPENDENCIES in MYSQL_ADD_PLUGIN() to DEPENDS
         to be consistent with other cmake commands and macros
      
      2. use this DEPENDS option in plugins
      
      3. add dependencies to the plugin embedded target too
      
      4. plugins don't need to add GenError dependency explicitly,
         all plugins depend on it automatically
      175c9fe1
  3. 02 Aug, 2021 2 commits
  4. 31 Jul, 2021 1 commit
    • Sergei Golubchik's avatar
      MDEV-23752 SHOW EXPLAIN FOR thd waits for sleep · 2cdf8a93
      Sergei Golubchik authored
      fix main.processlist_notembedded test
      
      * before EXPLAINing `select sleep` wait for select to start
        (fixes "Target is not running an EXPLAINable command")
      * after killing sleep, wait for it to die
        (fixes test failures on --repeat when old sleep shows on a test rerun)
      
      * unify with 10.3, copy minor changes from there
        (`--echo End of 5.5` vs `--echo # End of 5.5`, etc)
      2cdf8a93
  5. 29 Jul, 2021 2 commits
    • Nikita Malyavin's avatar
      MDEV-20154 Assertion `len <= col->len | ...` failed in row_merge_buf_add · 22709897
      Nikita Malyavin authored
      len was containing garbage, since vctempl->mysql_col_offset was
      containing old value while calling row_mysql_store_col_in_innobase_format
      from innobase_get_computed_value().
      
      It was not updated after the first ALTER TABLE call, because it's INPLACE
      logic considered there's nothing to update, and exited immediately from
      ha_innobase::inplace_alter_table().
      
      However, vcol metadata needs an update, since vcols structure is changed
      in mysql record.
      
      The regression was introduced by 12614af1. There, refcount==1 condition
      was removed, which turned out to be crucial, though racy. The idea was to
      update vc_templ after each (sequencing) ALTER TABLE.
      
      We should do the same another way, and there may be a plenty of solutions,
      but the simplest one is to add a following condition:
        if vcol structure is changed, drop vc_templ; it will be recreated on next
        ha_innobase::open() call.
      
      in prepare_inplace_alter_table. It is safe, since innodb inplace changes
      require at least HA_ALTER_INPLACE_SHARED_LOCK_AFTER_PREPARE, which
      guarantee MDL_EXCLUSIVE on this stage.
      
      alter_templ_needs_rebuild() also has to track the columns not indexed, to
      keep vc_templ correct.
      
      Note that vc_templ is always kept constructed and available after
      ha_innobase::open() call, even on INSERT, though no virtual columns are
      evaluated during that statement
      inside innodb.
      
      In the test case suplied, it will be recreated on the second ALTER TABLE.
      22709897
    • Marko Mäkelä's avatar
      Cleanup: Remove redundant conditions · 0e8981ef
      Marko Mäkelä authored
      ha_innobase::prepare_inplace_alter_table(): Remove always-true conditions.
      Near the start of the function, we would already have returned if
      no ALTER TABLE operation flags were set that would require special
      action from InnoDB.
      
      It turns out that the conditions were redundant already when they were
      introduced in mysql/mysql-server@241387a2b6b61fb8a4f78dc4ad0aaa289400c694
      and in commit 068c6197.
      
      Thanks to Nikita Malyavin for noticing this.
      0e8981ef
  6. 28 Jul, 2021 2 commits
    • Nikita Malyavin's avatar
      MDEV-26220 Server crashes with indexed by prefix virtual column · 9b8e207c
      Nikita Malyavin authored
      Server crashes in Field::register_field_in_read_map upon select from
      partitioned table with indexed by prefix virtual column.
      
      After several read-mark fixes a problem has surfaced:
      Since KEY (c(10),a) uses only a prefix of c, a new field is created,
      duplicated from table->field[3], with a new length. However,
      vcol_inco->expr is not copied.
      
      Therefore, (*key_info)->key_part[i].field->vcol_info->expr was left NULL
      in ha_partition::index_init().
      
      Solution: initialize vcols before key initialization
      
      Also key initialization is moved to a function.
      9b8e207c
    • Marko Mäkelä's avatar
      Cleanup: Remove dead code · fb8be6a6
      Marko Mäkelä authored
      Thanks to Nikita Malyavin for noticing this.
      The dead code that was originally introduced in
      mysql/mysql-server@b8bd31740cd7088f3a3c164981c7ccda487d301d
      was added in commit 2e814d47
      to this code base.
      fb8be6a6
  7. 27 Jul, 2021 9 commits
  8. 26 Jul, 2021 4 commits
    • Jan Lindström's avatar
      MDEV-26062 : InnoDB: WSREP: referenced FK check fail: Lock wait index... · 0bd9f755
      Jan Lindström authored
      MDEV-26062 : InnoDB: WSREP: referenced FK check fail: Lock wait index `PRIMARY` table `schema`.`child_table`
      
      Problem was that not all normal error codes where not handled
      after wsrep_row_upd_check_foreign_constraints() call. Furhermore,
      debug assertion did not contain all normal error cases. Changed
      ib:: calls to WSREP_ calls to use wsrep instrumentation.
      0bd9f755
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-25998 InnoDB removes the tablespace from default encrypt list early · ce870b2a
      Thirunarayanan Balathandayuthapani authored
      Problem:
      =========
      As a part of MDEV-14398 patch, InnoDB added and removed
      the tablespace from default encrypt list. But InnoDB removes
      the tablespace from the default encrypt list too early due to
      i) other encryption thread working on the tablespace
      ii) When tablespace is being flushed at the end of
      key rotation
      
      InnoDB fails to decrypt/encrypt the tablespace since
      the tablespace removed too early and it leads to
      test case failure.
      
      Solution:
      =========
      Avoid the removal of tablespace from default_encrypt_list
      only when
      1) Another active encryption thread working on tablespace
      2) Eligible for tablespace key rotation
      3) Tablespace is in flushing phase
      
      Removed the workaround in encryption.innodb_encryption_filekeys test case.
      ce870b2a
    • Eugene Kosov's avatar
      0711a53a
    • Rucha Deodhar's avatar
      MDEV-23786: Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' · af0b26f9
      Rucha Deodhar authored
      failed for TokuDB engine CREATE TABLE
      
      Analysis: Assertion failure happens because the database doesn't exist to
      create the table but ha_tokudb::create() still returns false.
      So error is not reported.
      Fix: Store the error state and report the error.
      af0b26f9
  9. 24 Jul, 2021 4 commits
  10. 23 Jul, 2021 3 commits
  11. 22 Jul, 2021 7 commits
  12. 21 Jul, 2021 3 commits
    • Igor Babaev's avatar
      MDEV-26189 Missing handling of unknown column in WHERE of recursive CTE · 4aeb2b1c
      Igor Babaev authored
      SQL processor failed to catch references to unknown columns and other
      errors of the phase of semantic analysis in the specification of a
      hanging recursive CTE. This happened because the function
      With_clause::prepare_unreferenced_elements() failed to detect a CTE as
      a hanging CTE if the CTE was recursive.
      Fixing this problem in the code of the mentioned function opened another
      problem: EXPLAIN started including the lines for the specifications of
      hanging recursive CTEs in its output. This problem also was fixed in this
      patch.
      
      Approved by Dmitry Shulga <dmitry.shulga@mariadb.com>
      4aeb2b1c
    • Hollow Man's avatar
      Typo fixes in item_strfunc.cc · bd711d4f
      Hollow Man authored
      bd711d4f
    • Heinz Wiesinger's avatar
      Add feature summary at the end of cmake. · 751ebe44
      Heinz Wiesinger authored
      This gives a short overview over found/missing dependencies as well
      as enabled/disabled features.
      
      Initial author Heinz Wiesinger <heinz@m2mobi.com>
      Additions by Vicențiu Ciorbaru <vicentiu@mariadb.org>
      * Report all plugins enabled via MYSQL_ADD_PLUGIN
      * Simplify code. Eliminate duplication by making use of WITH_xxx
        variable values to set feature "ON" / "OFF" state.
      
      Reviewed by: wlad@mariadb.com (code details) serg@mariadb.com (the idea)
      751ebe44