1. 10 Sep, 2024 21 commits
  2. 06 Sep, 2024 5 commits
    • Marko Mäkelä's avatar
      f06060f5
    • Marko Mäkelä's avatar
      MDEV-34823 Invalid arguments in ib_push_warning() · 024a18db
      Marko Mäkelä authored
      In the bug report MDEV-32817 it occurred that the function
      row_mysql_get_table_status() is outputting a fil_space_t*
      as if it were a numeric tablespace identifier.
      
      ib_push_warning(): Remove. Let us invoke push_warning_printf() directly.
      
      innodb_decryption_failed(): Report a decryption failure and set the
      dict_table_t::file_unreadable flag. This code was being duplicated in
      very many places. We return the constant value DB_DECRYPTION_FAILED
      in order to avoid code duplication in the callers and to allow tail calls.
      
      innodb_fk_error(): Report a FOREIGN KEY error.
      
      dict_foreign_def_get(), dict_foreign_def_get_fields(): Remove.
      This code was being used in dict_create_add_foreign_to_dictionary()
      in an apparently uncovered code path. That ib_push_warning() call
      would pass the integer i+1 instead of a pointer to NUL terminated
      string ("%s"), and therefore the call should have resulted in a crash.
      
      dict_print_info_on_foreign_key_in_create_format(),
      innobase_quote_identifier(): Add const qualifiers.
      
      row_mysql_get_table_error(): Replaces row_mysql_get_table_status().
      Display no message on DB_CORRUPTION; it should be properly reported at
      the SQL layer anyway.
      024a18db
    • Yuchen Pei's avatar
    • Yuchen Pei's avatar
      MDEV-33858 Assertion `(mem_root->flags & 4) == 0' fails on 2nd execution of PS... · 00cb3440
      Yuchen Pei authored
      MDEV-33858 Assertion `(mem_root->flags & 4) == 0' fails on 2nd execution of PS with -DWITH_PROTECT_STATEMENT_MEMROOT=ON
      
      Simply adding tests as the bug is fixed with a backport of MDEV-34447
      00cb3440
    • Yuchen Pei's avatar
      MDEV-34447: Memory leakage is detected on running the test main.ps against the server 11.1 · 2c3e07df
      Yuchen Pei authored
      The memory leak happened on second execution of a prepared statement
      that runs UPDATE statement with correlated subquery in right hand side of
      the SET clause. In this case, invocation of the method
        table->stat_records()
      could return the zero value that results in going into the 'if' branch
      that handles impossible where condition. The issue is that this condition
      branch missed saving of leaf tables that has to be performed as first
      condition optimization activity. Later the PS statement memory root
      is marked as read only on finishing first time execution of the prepared
      statement. Next time the same statement is executed it hits the assertion
      on attempt to allocate a memory on the PS memory root marked as read only.
      This memory allocation takes place by the sequence of the following
      invocations:
       Prepared_statement::execute
        mysql_execute_command
         Sql_cmd_dml::execute
          Sql_cmd_update::execute_inner
           Sql_cmd_update::update_single_table
            st_select_lex::save_leaf_tables
             List<TABLE_LIST>::push_back
      
      To fix the issue, add the flag SELECT_LEX::leaf_tables_saved to control
      whether the method SELECT_LEX::save_leaf_tables() has to be called or
      it has been already invoked and no more invocation required.
      
      Similar issue could take place on running the DELETE statement with
      the LIMIT clause in PS/SP mode. The reason of memory leak is the same as for
      UPDATE case and be fixed in the same way.
      2c3e07df
  3. 05 Sep, 2024 8 commits
  4. 04 Sep, 2024 1 commit
    • Daniel Black's avatar
      MDEV-34864 SHOW INDEX FROM - SEQ_IN_INDEX to ULong · d1dc7067
      Daniel Black authored
      MySQL-Connector-Net casts SEQ_IN_INDEX to uint and will
      raise an exception if the type is a System.Int64.
      
      As we don't support a huge number of multi-columns in
      an index reducing to a uint is sufficient to represent
      all values and maintain compatibility with MySQL-Connector-Net.
      
      This matches the type (uint) returned by MySQL-8.3 and 8.0.
      
      Reviewer: Alexander Barkov <bar@mariadb.com>
      d1dc7067
  5. 01 Sep, 2024 5 commits
    • Denis Protivensky's avatar
      MDEV-33133: MDL conflict handling code should skip BF-aborted trxs · 235f33e3
      Denis Protivensky authored
      It's possible that MDL conflict handling code is called more
      than once for a transaction when:
      - it holds more than one conflicting MDL lock
      - reschedule_waiters() is executed,
      which results in repeated attempts to BF-abort already aborted
      transaction.
      In such situations, it might be that BF-aborting logic sees
      a partially rolled back transaction and erroneously decides
      on future actions for such a transaction.
      
      The specific situation tested and fixed is when a SR transaction
      applied in the node gets BF-aborted by a started TOI operation.
      It's then caught with the server transaction already rolled back,
      but with no MDL locks yet released. This caused wrong state
      detection for such a transaction during repeated MDL conflict
      handling code execution.
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      235f33e3
    • Jan Lindström's avatar
      MDEV-34841 : Enable working Galera tests · 7e748d07
      Jan Lindström authored
      * Fixes galera.galera_bf_kill_debug test case.
      * Enable galera_ssl_upgrade, galera_ssl_reload, galera_pc_bootstrap
      * Add MDEV to disabled tests that miss it
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      7e748d07
    • Jan Lindström's avatar
      MDEV-33897 : Galera test failure on galera_3nodes.galera_gtid_consistency · dd64f29d
      Jan Lindström authored
      Based on logs SST was started before donor reached
      Primaty state. Add wait_conditions to make sure that
      nodes reach Primary state before starting next node.
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      dd64f29d
    • Alexey Yurchenko's avatar
      Add a basic MTR test for DDL error voting to ensure that all DDLs · 83196a7b
      Alexey Yurchenko authored
      generate consistent error messages,
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      83196a7b
    • Alexey Yurchenko's avatar
      Use only MySQL code for TOI error vote · 731a5aba
      Alexey Yurchenko authored
      For TOI events specifically we have a situation where in case of the
      same error different nodes may generate different messages. This may
      be for two reasons:
       - different locale setting between the current client session and
         server default (we can reasonably require server locales to be
         identical on all nodes, but user can change message locale for the
         session)
       - non-deterministic course of STATEMENT execution e.g. for ALTER TABLE
      
      On the other hand we may reasonably expect TOI event failures since
      they are executed after replication, so we must ensure that voting is
      consistent. For that purpose error codes should be sufficiently unique
      and deterministic for TOI event failures as DDLs normally deal with
      a single object, so we can merely use MySQL error codes to vote on.
      
      Notice that this problem does not happen with regular transactional
      writesets, since the originator node will always vote success and
      replica nodes are assumed to have the same global locale setting.
      As such different error messages indicate different errors even if
      the error code is the same (e.g. ER_DUP_KEY can happen on different
      rows tables).
      
      Use only MySQL error code (without the error message) for error voting
      in case of TOI event failure.
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      731a5aba