1. 21 Dec, 2023 2 commits
  2. 20 Dec, 2023 3 commits
  3. 19 Dec, 2023 9 commits
  4. 18 Dec, 2023 7 commits
  5. 17 Dec, 2023 3 commits
    • Sergei Golubchik's avatar
      MDEV-33046 race condition in InnoDB dict_stats_schedule() · aff5ed39
      Sergei Golubchik authored
      it can be invoked with ms=0. In that case dict_stats_func is
      invoked immediately, it calls dict_stats_process_entry_from_recalc_pool()
      which at the end might try to call dict_stats_schedule() again to
      queue another recalc. And it can happen that the first
      dict_stats_schedule(0) call didn't release dict_stats_mutex yet,
      so the second dict_stats_schedule() won't queue a recalc. And as a
      result the table won't have its stats recalculated at all, not now,
      not later.
      
      This causes innodb.innodb_stats_auto_recalc to fail sporadically.
      
      This commit doesn't fix it but makes it less likely to occur which happens
      to be enough for the test to pass. Proper fix is coming soon.
      aff5ed39
    • Sergei Golubchik's avatar
      Spider cannot run DDL (e.g. create tables) before ddl recovery · 0930eb86
      Sergei Golubchik authored
      use signal_ddl_recovery_done callback for that.
      
      also make the server to call signal_ddl_recovery_done() when loading
      plugins at run-time (so that plugins would't need to detect that
      on their own)
      0930eb86
    • Sergei Golubchik's avatar
      Merge branch '10.5' into 10.6 · e95bba9c
      Sergei Golubchik authored
      e95bba9c
  6. 15 Dec, 2023 5 commits
  7. 14 Dec, 2023 5 commits
    • Sisi Huang's avatar
    • Sergei Golubchik's avatar
      add missing result file · 4eca64e3
      Sergei Golubchik authored
      4eca64e3
    • Marko Mäkelä's avatar
      MDEV-18322 Assertion "wrong page type" on instant ALTER TABLE · 655f78a2
      Marko Mäkelä authored
      row_ins_clust_index_entry_low(): Invoke btr_set_instant() in the same
      mini-transaction that has successfully inserted the metadata record.
      In this way, if inserting the metadata record fails before any
      undo log record was written for it, the index root page will remain
      consistent.
      
      innobase_instant_try(): Remove the btr_set_instant() call.
      
      This is a 10.6 version of c17aca2f.
      
      Tested by: Matthias Leich
      Reviewed by: Thirunarayanan Balathandayuthapani
      655f78a2
    • Marko Mäkelä's avatar
      MDEV-32939 If tables are frequently created, renamed, dropped, a backup cannot be restored · f21a6cbf
      Marko Mäkelä authored
      During mariadb-backup --backup, a table could be renamed, created and
      dropped. We could have both oldname.ibd and oldname.new, and one of
      the files would be deleted before the InnoDB recovery starts. The desired
      end result would be that we will recover both oldname.ibd and newname.ibd.
      
      During normal crash recovery, at most one file operation (create, rename,
      delete) may require to be replayed from the write-ahead log before the
      DDL recovery starts.
      
      deferred_spaces.create(): In mariadb-backup --prepare, try to create the
      file in case it does not exist.
      
      fil_name_process(): Display a message about not found files not only
      if innodb_force_recovery is set, but also in mariadb-backup --prepare.
      If we are processing a FILE_RENAME for a tablespace whose recovery is
      deferred, suppress the message and adjust the file name in case
      fil_ibd_load() returns FIL_LOAD_NOT_FOUND or FIL_LOAD_DEFER.
      
      fil_ibd_load(): Remove a redundant file name comparison.
      The caller already compared that the file names are different.
      We used to wrongly return FIL_LOAD_OK instead of FIL_LOAD_ID_CHANGED
      if only the schema name differed, such as a/t1.ibd and b/t1.ibd.
      
      Tested by: Matthias Leich
      Reviewed by: Thirunarayanan Balathandayuthapani
      f21a6cbf
    • Marko Mäkelä's avatar
      0f510d8b
  8. 13 Dec, 2023 6 commits
    • Marko Mäkelä's avatar
      MDEV-21245 InnoDB: Using a partial-field key prefix in search · 852e1383
      Marko Mäkelä authored
      ha_innobase::compare_key_parts(): If a full column index is
      being replaced with a column prefix index, return Compare_keys::NotEqual.
      852e1383
    • Daniel Black's avatar
      MDEV-33006 Missing required privilege CONNECTION ADMIN · 2c60d43d
      Daniel Black authored
      opt_kill_long_query_type being an enum could be 0 corresponding
      to ALL. When ALL is specified, the CONNECTION ADMIN is still
      required.
      
      Also check REPLICA MONITOR privilege and make the tests
      find the results by recording stderr.
      
      Noticed thanks to bug report by Tim van Dijen.
      
      Fixes: 79b58f1c
      2c60d43d
    • Rex's avatar
      MDEV-31279 Crash when lateral derived is guaranteed to return no rows · b4712242
      Rex authored
      Consider this query
      SELECT t1.* FROM t1, (SELECT t2.b FROM t2 WHERE NOT EXISTS
      (SELECT 1 FROM t3) GROUP BY b) sq where sq.b = t1.a;
      
      If SELECT 1 FROM t3 is expensive, for example t3 has >
      thd->variables.expensive_subquery_limit, first evaluation is deferred to
      mysql_derived_fill().  There it is noted that, in the above case
       NOT EXISTS (SELECT 1 FROM t3) is constant and false.
      
      This causes the join variable zero_result_cause to be set to
      "Impossible WHERE noticed after reading const tables" and the handler
      for this join is never "opened" via handler::ha_open.
      
      When mysql_derived_fill() is called for the next group of results, this
      unopened handler is not taken into account.
      
      reviewed by Igor Babaev (igor@mariadb.com)
      b4712242
    • Marko Mäkelä's avatar
      MDEV-18322 Assertion "wrong page type" on instant ALTER TABLE · c17aca2f
      Marko Mäkelä authored
      row_ins_clust_index_entry_low(): Invoke btr_set_instant() in the same
      mini-transaction that has successfully inserted the metadata record.
      In this way, if inserting the metadata record fails before any
      undo log record was written for it, the index root page will remain
      consistent.
      
      innobase_instant_try(): Remove the btr_set_instant() call.
      
      Reviewed by: Thirunarayanan Balathandayuthapani
      Tested by: Matthias Leich
      c17aca2f
    • Sergei Golubchik's avatar
      MDEV-32542 plugins.compression - multiple buildbot failures · 9a7deb1c
      Sergei Golubchik authored
      more robust plugins.compression test
      9a7deb1c
    • Daniel Black's avatar
      MDEV-32795: ALTER SEQUENCE IF NOT EXISTS non_existing_seq Errors rather than note · fbe604d8
      Daniel Black authored
      Like all IF NOT EXISTS syntax, a Note should be generated.
      
      The original commit of Seqeuences cleared the IF NOT EXISTS part
      in the sql/sql_yacc.yy with lex->create_info.init(). Without this
      bit set there was no way it could do anything other than error.
      
      To remedy this removal, the sql_yacc.yy components have been
      minimised as they where all set at the beginning of the ALTER.
      This way the opt_if_not_exists correctly set the IF_EXISTS flag.
      
      In MDEV-13005 (bb4dd70e) the error code changed, requiring
      ER_UNKNOWN_SEQUENCES to be handled in the function
      No_such_table_error_handler::handle_condition.
      fbe604d8