1. 10 Sep, 2024 18 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 8 commits