1. 18 Jul, 2021 1 commit
    • Dmitry Shulga's avatar
      MDEV-26147: The test main.sp-row fails in case it is run in PS mode · efa311ab
      Dmitry Shulga authored
      In case a stored procedure is invoked in PS mode with argument of type ROW()
      like the following one:
        CALL p1(ROW(10,20))
      such statement fails with the error
        ER_OPERAND_COLUMNS (1241): Operand should contain 1 column(s)
      
      The reason of emitting the error is that wrong method was invoked
      on fixing an item corresponding to an argument of stored procedure -
      the method fix_fields_if_needed_for_scalar() was called instead of
      fix_fields_if_needed() that should be called.
      efa311ab
  2. 15 Jul, 2021 1 commit
  3. 08 Jul, 2021 1 commit
  4. 05 Jul, 2021 2 commits
  5. 02 Jul, 2021 12 commits
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · f9194d02
      Marko Mäkelä authored
      f9194d02
    • Marko Mäkelä's avatar
      Fixup 586870f9 · a6adefad
      Marko Mäkelä authored
      One more result was affected by merging
      768c5188.
      a6adefad
    • Eugene Kosov's avatar
      submodules.cmake: add missing --depth=1 · ffe744e7
      Eugene Kosov authored
      ffe744e7
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 05f7fd57
      Marko Mäkelä authored
      05f7fd57
    • Marko Mäkelä's avatar
      MDEV-26077 Assertion err != DB_DUPLICATE_KEY or unexpected ER_TABLE_EXISTS_ERROR · 2bf6f2c0
      Marko Mäkelä authored
      This is a backport of 161e4bfa.
      
      trans_rollback_to_savepoint(): Only release metadata locks (MDL)
      if the storage engines agree, after the changes were already rolled back.
      
      Ever since commit 3792693f
      and mysql/mysql-server@55ceedbc3feb911505dcba6cee8080d55ce86dda
      we used to cheat here and always release MDL if the binlog is disabled.
      
      MDL are supposed to prevent race conditions between DML and DDL also
      when no replication is in use. MDL are supposed to be a superset of
      InnoDB table locks: InnoDB table lock may only exist if the thread
      also holds MDL on the table name.
      
      In the included test case, ROLLBACK TO SAVEPOINT would wrongly release
      the MDL on both tables and let ALTER TABLE proceed, even though the DML
      transaction is actually holding locks on the table.
      
      Until commit 1bd681c8 (MDEV-25506)
      in MariaDB 10.6, InnoDB would often work around the locking violation
      in a blatantly non-ACID way: If locks exist on a table that is being
      dropped (in this case, actually a partition of a table that is being
      rebuilt by ALTER TABLE), InnoDB could move the table (or partition)
      into a queue, to be dropped after the locks and references had been
      released. If the lock is not released and the original copy of the
      table not dropped quickly enough, a name conflict could occur on
      a subsequent ALTER TABLE.
      
      The scenario of commit 3792693f
      is unaffected by this fix, because mysqldump
      would use non-locking reads, and the transaction would not be holding
      any InnoDB locks during the execution of ROLLBACK TO SAVEPOINT.
      MVCC reads inside InnoDB are only covered by MDL and page latches,
      not by any table or record locks.
      
      FIXME: It would be nice if storage engines were specifically asked
      which MDL can be released, instead of only offering a choice
      between all or nothing. InnoDB should be able to release any
      locks for tables that are no longer in trx_t::mod_tables, except
      if another transaction had converted some implicit record locks
      to explicit ones, before the ROLLBACK TO SAVEPOINT had been completed.
      
      Reviewed by: Sergei Golubchik
      2bf6f2c0
    • Marko Mäkelä's avatar
      MDEV-25129 fixup: Adjust test result · 5a2b6258
      Marko Mäkelä authored
      Fixup for commit 768c5188
      5a2b6258
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-25971 Instant ADD COLUMN fails to issue truncation warnings · e34877ab
      Thirunarayanan Balathandayuthapani authored
      A table rebuild that would truncate the default value of a
      DATE column is expected to issue data truncation warnings.
      But, these warnings are not being issued if the ADD COLUMN
      is being executed with ALGORITHM=INSTANT. InnoDB sets the
      warning of the field while assigning the default value
      of the field during check_if_supported_inplace_alter().
      e34877ab
    • Daniel Black's avatar
    • Daniel Black's avatar
      Merge branch '10.2' into 10.3 · a88ddb16
      Daniel Black authored
      a88ddb16
    • Daniel Black's avatar
      MDEV-25129 postfix for windows · c22f7f23
      Daniel Black authored
      C:\projects\server\sql\sql_show.cc(7913): error C2220: warning treated as error - no 'object' file generated [C:\projects\server\win_build\sql\sql.vcxproj]
      C:\projects\server\sql\sql_show.cc(7913): warning C4267: 'initializing': conversion from 'size_t' to 'uint', possible loss of data [C:\projects\server\win_build\sql\sql.vcxproj]
      
      caused by 768c5188
      c22f7f23
    • Daniel Black's avatar
      mtr: aix - no pool of threads · 0a9487b6
      Daniel Black authored
      0a9487b6
    • Daniel Black's avatar
      MDEV-25894: support AIX as a platform in mtr · 3f2c4758
      Daniel Black authored
      Parital backport of 48938c57
      so platform dependent AIX tests can be done.
      3f2c4758
  6. 30 Jun, 2021 3 commits
    • Sergei Petrunia's avatar
      4a6e2d34
    • Sergei Petrunia's avatar
      Merge 10.2->10.3 · 586870f9
      Sergei Petrunia authored
      586870f9
    • Sergei Petrunia's avatar
      MDEV-25969: Condition pushdown into derived table doesn't work if select list uses SP · eb20c91b
      Sergei Petrunia authored
      Consider a query of the form:
      
        select ... from (select item2 as COL1) as T where COL1=123
      
      Condition pushdown into derived table will try to push "COL1=123" condition
      down into table T.
      The process of pushdown involves "substituting" the item, that is,
      replacing Item_field("T.COL1") with its "producing item" item2.
      In order to use item2, one needs to clone it (call Item::build_clone).
      
      If the item is not cloneable (e.g. Item_func_sp is not), the pushdown
      process will fail and nothing at all will be pushed.
      
      Fixed by introducing transform_condition_or_part() which will try to apply
      the transformation for as many parts of condition as possible. The parts of
      condition that couldn't be transformed are dropped.
      eb20c91b
  7. 29 Jun, 2021 2 commits
  8. 28 Jun, 2021 1 commit
  9. 27 Jun, 2021 1 commit
  10. 26 Jun, 2021 2 commits
    • Igor Babaev's avatar
      8b3f816c
    • Igor Babaev's avatar
      MDEV-20411 Procedure containing CTE incorrectly stored in mysql.proc · 12c80df4
      Igor Babaev authored
      If the first token of the body of a stored procedure was 'WITH' then
      the beginning of the body was determined incorrectly and that token was
      missing in the string representing the body of the SP in mysql.proc. As a
      resultnany call of such procedure failed as the string representing the
      body could not be parsed.
      
      The patch corrects the code of the functions get_tok_start() and
      get_cpp_tok_start() of the class Lex_input_stream to make them take into
      account look ahead tokens. The patch is needed only for 10.2 as this
      problem has neen resolved in 10.3+.
      12c80df4
  11. 25 Jun, 2021 3 commits
  12. 23 Jun, 2021 4 commits
  13. 22 Jun, 2021 5 commits
    • Alexey Bychko's avatar
      MDEV-25960 yum update overwrites customized logrotation config (/etc/logrotate.d/mysql) · aaaed9ba
      Alexey Bychko authored
      added %config directive to /etc/logrotate.d/mysql and put it to server
      package. if file is edited by customer and defaults are changed - new
      .rpmnew file with defaults will be created next to old one.
      aaaed9ba
    • Marko Mäkelä's avatar
      MDEV-25981 InnoDB upgrade fails · 35a9aaeb
      Marko Mäkelä authored
      trx_undo_mem_create_at_db_start(): Relax too strict upgrade checks
      that were introduced in
      commit e46f76c9 (MDEV-15912).
      On commit, pages will typically be set to TRX_UNDO_CACHED state.
      Having the type TRX_UNDO_INSERT in such pages is common and
      unproblematic; the type would be reset in trx_undo_reuse_cached().
      
      trx_rseg_array_init(): On failure, clean up the rollback segments
      that were initialized so far, to avoid an assertion failure later
      during shutdown.
      35a9aaeb
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · e07f0a2d
      Marko Mäkelä authored
      e07f0a2d
    • Marko Mäkelä's avatar
      MDEV-25982 Upgrade of MariaDB 10.1 log crashes due to missing encryption key · 19716ad5
      Marko Mäkelä authored
      init_crypt_key(): On failure, set info->key_version to
      ENCRYPTION_KEY_VERSION_INVALID.
      
      log_crypt_101_read_block(): Refuse to attempt decryption if
      info->key_version is ENCRYPTION_KEY_VERSION_INVALID.
      19716ad5
    • Igor Babaev's avatar
      MDEV-25679 Wrong result selecting from simple view with LIMIT and ORDER BY · 6e94ef41
      Igor Babaev authored
      This bug affected queries with views / derived_tables / CTEs whose
      specifications were of the form
        (SELECT ... LIMIT <n>) ORDER BY ...
      Units representing such specifications contains one SELECT_LEX structure
      for (SELECT ... LIMIT <n>) and additionally SELECT_LEX structure for
      fake_select_lex. This fact should have been taken into account in the
      function mysql_derived_fill().
      
      This patch has to be applied to 10.2 and 10.3 only.
      6e94ef41
  14. 21 Jun, 2021 2 commits
    • Igor Babaev's avatar
      MDEV-25679 Wrong result selecting from simple view with LIMIT and ORDER BY · cc0bd843
      Igor Babaev authored
      This bug affected queries with views / derived_tables / CTEs whose
      specifications were of the form
        (SELECT ... LIMIT <n>) ORDER BY ...
      Units representing such specifications contains one SELECT_LEX structure
      for (SELECT ... LIMIT <n>) and additionally SELECT_LEX structure for
      fake_select_lex. This fact should have been taken into account in the
      function mysql_derived_fill().
      
      This patch has to be applied to 10.2 and 10.3 only.
      cc0bd843
    • Marko Mäkelä's avatar
      MDEV-25979 Invalid page number written to DB_ROLL_PTR · 9dc50ea2
      Marko Mäkelä authored
      trx_undo_report_row_operation(): Fix a race condition that was introduced
      in commit f74023b9 (MDEV-15090).
      We must not access undo_block after the page latch has been released
      in mtr_t::commit(), because the block could be evicted or replaced.
      9dc50ea2