1. 09 Jan, 2024 6 commits
  2. 08 Jan, 2024 2 commits
  3. 03 Jan, 2024 6 commits
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 8bd5a3de
      Marko Mäkelä authored
      8bd5a3de
    • Marko Mäkelä's avatar
      MDEV-33156 Crash on innodb_buf_flush_list_now=ON and innodb_force_recovery=6 · cc5c0eda
      Marko Mäkelä authored
      srv_start(): Move a read only mode startup tweak from
      innodb_init_params() to the correct location. Also if
      innodb_force_recovery=6 we will disable the doublewrite buffer,
      because InnoDB must run in read-only mode to prevent further corruption.
      
      This change only affects debug checks. Whenever srv_read_only_mode holds,
      the buf_pool.flush_list will be empty, that is, there will be no writes
      of persistent InnoDB data pages.
      
      Reviewed by: Thirunarayanan Balathandayuthapani
      cc5c0eda
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 3a3a4f04
      Marko Mäkelä authored
      3a3a4f04
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-33098 The test innodb.doublewrite_debug occasionally fails to start up InnoDB · 77b8bedf
      Thirunarayanan Balathandayuthapani authored
      - innodb.doublewrite_debug should avoid the checkpoint
      before killing the server. So used debug sync and
      innodb_flush_sync to avoid the checkpoint completely.
      Test case allowed to skip on MSAN builder due to extra
      checkpoint.
      77b8bedf
    • Marko Mäkelä's avatar
      MDEV-33157 WSREP: Fix function pointer mismatch · 96130b18
      Marko Mäkelä authored
      wsrep_plugin_init(), wsrep_plugin_deinit(): Remove these dummy functions
      in order to fix an error that would be flagged by cmake -DWITH_UBSAN=ON
      when using clang.
      
      wsrep_show_ready(), wsrep_show_bf_aborts(): Correct the signature.
      96130b18
    • Igor Babaev's avatar
      MDEV-29362 Crash with query using constant subquery as left part of IN subquery · 832e96de
      Igor Babaev authored
      If a query has a HAVING clause that contains a predicate with a constant
      IN subquery whose lef part in its turn is a subquery and the predicate is
      subject to pushdown from HAVING to WHERE then execution of the query could
      cause a crash of the server.
      
      The cause of the problem was the missing implementation of the walk()
      method for the class Item_in_optimizer. As a result in some cases the left
      operand of the Item_in_optimizer condition could be traversed twice by
      the walk procedure. For many call-back functions used as an argument of
      this procedure it does not matter. Yet it matters for the call-back
      function cleanup_excluding_immutables_processor() used in pushdown of
      predicates from HAVING to WHERE. If the processed item is marked with
      the IMMUTABLE_FL flag then the processor just removes this flag, otherwise
      it performs cleanup of the item making it unfixed. If an item is marked
      with an the IMMUTABLE_FL and it traversed with this processor twice then
      it becomes unfixed after the second traversal though the flag indicates
      that the item should not be cleaned up.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      832e96de
  4. 02 Jan, 2024 1 commit
  5. 27 Dec, 2023 3 commits
    • Alexander Barkov's avatar
      MDEV-33019 The database part is not case sensitive in SP names · 9695974e
      Alexander Barkov authored
      Problem:
      
      sp_cache erroneously looked up fully qualified SP names (e.g. `DB`.`SP`),
      in case insensitive style. It was wrong, because only the "name"
      part is always case insensitive, while the "db" part should be compared
      according to lower_case_table_names (case sensitively for 0,
      case insensitively for 1 and 2).
      
      Fix:
      
      Adding a "casedn_name" parameter make_qname() to tell
      if the name part should be lower cased:
        `DB1`.`SP` -> "DB1.SP"  (when casedn_name=false)
        `DB1`.`SP` -> "DB1.sp"  (when casedn_name=true)
      and using make_qname() with casedn_name=true when creating
      sp_cache hash lookup keys.
      
      Details:
      
      As a result, it now works as follows:
      - sp_head::m_db is converted to lower case if lower_case_table_names>0
        during the sp_name initialization phase. So when make_qname() is called,
        sp_head::m_db is already normalized. There are no changes in here.
      
      - The initialization phase of sp_head when creating sp_head::m_qname
        now calls make_qname() with casedn_name=true,
        so sp_head::m_name gets written to sp_head::m_qname in lower case.
      
      - sp_cache_lookup() now also calls make_qname() with casedn_name=true,
        so sp_head::m_name gets written to the temporary lookup key in lower case.
      
      - sp_cache::m_hashtable now uses case sensitive comparison
      9695974e
    • Alexander Barkov's avatar
      MDEV-33019 The database part is not case sensitive in SP names · 916caac2
      Alexander Barkov authored
      Part#1 A non-functional change
      
      Changing the signature of Identifier_chain2::make_qname() from
      
        bool make_qname(MEM_ROOT *mem_root, LEX_CSTRING *dst) const;
      
      to
      
        LEX_CSTRING make_qname(MEM_ROOT *mem_root) const;
      
      Now the result is returned as LEX_CSTRING from the function rather than
      is passed as a parameter.
      The return value {NULL,0} means "EOM".
      916caac2
    • Alexander Barkov's avatar
      A 11.3->10.4 backport for MDEV-31991 Split class Database_qualified_name · 371bf4ab
      Alexander Barkov authored
      This is a requirement step to fix and merge easier
        MDEV-33019 The database part is not case sensitive in SP names
      
      The original MDEV-31991 commit commend:
      
      - Moving some of Database_qualified_name methods into a new class
        Identifier_chain2.
      
      - Changing the data type of the following variables from
        Database_qualified_name to Identifier_chain2:
      
        * q_pkg_proc in LEX::call_statement_start()
        * q_pkg_func in LEX::make_item_func_call_generic()
      
      Rationale:
      
      The data type of Database_qualified_name::m_db will be changed
      to Lex_ident_db soon. So Database_qualified_name won't be able
      to store the `pkg.routine` part of `db.pkg.routine` any more,
      because `pkg` must not depend on lower-case-table-names.
      371bf4ab
  6. 23 Dec, 2023 1 commit
  7. 22 Dec, 2023 4 commits
    • Vladislav Vaintroub's avatar
      Fix galera.galera_kill_ddl test errors in debug mode. · 9f40f02a
      Vladislav Vaintroub authored
      Marko reported DBUG_ASSERT from dict_stats_shutdown().
      
      destroy_background_thd() does not like when current_thd is set.
      In galera, it can be the case, dict_stats_shutdown() can be called from
      user thread, to stop and later restart stats recalculations.
      9f40f02a
    • Daniele Sciascia's avatar
      Disable ps-protocol second execution on test that do not support it · c554f268
      Daniele Sciascia authored
      MDEV-31003 has introduced second execution for SELECTs that execute
      under ps-protocol. The following tests in galera suites do not support
      this mode of execution, disable it:
      
        galera.MDEV-27862
        galera.galera_log_output_csv
        galera.galera_query_cache
        galera.galera_query_cache_sync_wait
        galera_3nodes_sr.GCF-336
        galera_3nodes_sr.galera_sr_isolate_master
        galera_sr.galera_sr_large_fragment
        galera_sr.galera_sr_many_fragments
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      c554f268
    • Yuchen Pei's avatar
      [fixup] Spider: correct init queries after merge · bdaa6bac
      Yuchen Pei authored
      The merge e95bba9c missed it
      bdaa6bac
    • Daniele Sciascia's avatar
      MDEV-32549 Cluster inconsistent after SAVEPOINT is rolled back · 362c0950
      Daniele Sciascia authored
      Attempting to set a SAVEPOINT when one of the involved storage engines
      does not support savepoints, raises an error, and results in statement
      rollback. If Galera is enabled with binlog emulation, the above
      scenario was not handled correctly, and resulted in cluster wide
      inconsistency.
      
      The problem was in wsrep_register_binlog_handler(), which is called
      towards the beginning of SAVEPOINT execution. This function is
      supposed to mark the beginning of statement position in trx cache
      through `set_prev_position()`. However, it did so only on condition
      that `get_prev_position()` returns `MY_OFF_T_UNDEF`.
      This before statement position is typically reset to undefined at the
      end of statement in `binlog_commit()` / `binlog_rollback()`.
      However that's not the case with Galera and binlog emulation, for
      which binlog commit / rollback hooks are not called due to the
      optimization that avoids internal 2PC (MDEV-16509).
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      362c0950
  8. 21 Dec, 2023 17 commits