1. 18 Mar, 2021 1 commit
  2. 17 Mar, 2021 1 commit
  3. 16 Mar, 2021 1 commit
    • Jan Lindström's avatar
      MDEV-24916 : Assertion `current_stmt_binlog_format == BINLOG_FORMAT_STMT ||... · f4e4bff9
      Jan Lindström authored
      MDEV-24916 : Assertion `current_stmt_binlog_format == BINLOG_FORMAT_STMT || current_stmt_binlog_format == BINLOG_FORMAT_ROW' failed in THD::is_current_stmt_binlog_format_row
      
      Store old value of binlog format before wsrep code so that
      if we bail out because wsrep is not ready for connections
      we can restore binlog format correctly.
      f4e4bff9
  4. 12 Mar, 2021 1 commit
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-24730 Insert log operation fails after purge resets n_core_fields · eb7c5530
      Thirunarayanan Balathandayuthapani authored
      Online log for insert operation of redundant table fails with
      index->is_instant() assert. Purge can reset the n_core_fields when
      alter is waiting to upgrade MDL for commit phase of DDL. In the
      meantime, any insert DML tries to log the operation fails with
      index is not being instant.
      
      row_log_get_n_core_fields(): Get the n_core_fields of online log
      for the given index.
      
      rec_get_converted_size_comp_prefix_low(): Use n_core_fields of online
      log when InnoDB calculates the size of data tuple during redundant
      row format table rebuild.
      
      rec_convert_dtuple_to_rec_comp(): Use n_core_fields of online log
      when InnoDB does the conversion of data tuple to record during
      redudant row format table rebuild.
      
      - Adding the test case which has more than 129 instant columns.
      eb7c5530
  5. 11 Mar, 2021 5 commits
  6. 10 Mar, 2021 2 commits
    • Rinat Ibragimov's avatar
      MDEV-20946: Hard FTWRL deadlock under user level locks · fa5f6068
      Rinat Ibragimov authored
      It was possibile for a user to create an interlocked state which may go on
      for a significant period of time. There is a tight loop in the FTWRL code
      path that tries to repeatedly acquire a read lock. As the weight of FTWRL
      lock is the smallest among others, it's always selected by the deadlock
      detector, but can never be killed.
      
      Imaging the following sequence:
      
          connection_0                 connection_1
      
       GET_LOCK("l1", 0);
                                   LOCK TABLES t WRITE;
       FLUSH TABLES WITH READ LOCK;
                                   GET_LOCK("l1", 1000);
      
      The GET_LOCK statement in connection_1 triggers the deadlock detector,
      which tries to select the lock in FTWRL, since its weight is 0. However,
      since a loop in Global_read_lock::lock_global_read_lock() tries to always
      win, it tries to acquire lock again. Which invokes the deadlock detector,
      and that cycle continues until GET_LOCK in connection_1 times out.
      
      This patch resolves the live-locking by introducing a dynamic bonus to the
      deadlock weight associated with every lock. Each lock gets a bonus weight
      each time it's selected by the deadlock detector. In case of a live-lock
      situation, those locks that cannot be killed, get additional weight each
      iteration. Eventually their weight becomes so high that the deadlock
      detector shifts its attention to other lock, until it find the one that
      can be killed.
      fa5f6068
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-25070 SIGSEGV in fts_create_in_mem_aux_table · cc9c303a
      Thirunarayanan Balathandayuthapani authored
      InnoDB set the space in dict_table_t as NULL when table
      is discarded. So InnoDB shouldn't use the space present
      in table to detect whether the given tablespace is
      temporary tablespace.
      cc9c303a
  7. 09 Mar, 2021 3 commits
  8. 08 Mar, 2021 10 commits
  9. 05 Mar, 2021 5 commits
  10. 04 Mar, 2021 5 commits
    • Marko Mäkelä's avatar
      fixup 58b56f14: Remove dead code · 7759991a
      Marko Mäkelä authored
      row_prebuilt_t::m_no_prefetch: Remove (it was always false).
      row_prebuilt_t::m_read_virtual_key: Remove (it was always false).
      
      Only ha_innopart ever set these fields.
      7759991a
    • Marko Mäkelä's avatar
      MDEV-25051 Race condition between persistent statistics and RENAME TABLE or TRUNCATE · 978e48c9
      Marko Mäkelä authored
      innobase_rename_table(): Invoke dict_stats_wait_bg_to_stop_using_table()
      to ensure that dict_stats_update() cannot be accessing the table name
      that we will be modifying. If we are executing RENAME rather than TRUNCATE,
      reset the flag at the end so that persistent statistics can be calculated
      again.
      
      The race condition was encountered with ASAN and rr.
      Sorry, there is no test case, like there is for nothing related to
      dict_stats_wait_bg_to_stop_using_table(). The entire code is an ugly
      work-around for the failure of dict_stats_process_entry_from_recalc_pool()
      to acquire MDL.
      
      Note: It appears that an ALTER TABLE that is not rebuilding the table
      will fail to reset the flag that blocks the processing of statistics.
      978e48c9
    • Vicențiu Ciorbaru's avatar
      Merge branch '10.2' into 10.3 · e9b8b76f
      Vicențiu Ciorbaru authored
      e9b8b76f
    • Vicențiu Ciorbaru's avatar
      MDEV-25032: Window functions without column references get removed from ORDER BY · 5da6ffe2
      Vicențiu Ciorbaru authored
      row_number() over () window function can be used without any column in the OVER
      clause. Additionally, the item doesn't reference any tables, as it's not
      effectively referencing any table. Rather it is specifically built based
      on the end temporary table used for window function computation.
      
      This caused remove_const function to wrongly drop it from the ORDER
      list. Effectively, we shouldn't be dropping any window function from the
      ORDER clause, so adjust remove_const to account for that.
      
      Reviewed by: Sergei Petrunia sergey@mariadb.com
      5da6ffe2
    • Igor Babaev's avatar
      MDEV-22786 Crashes with nested table value constructors · 08d8bce5
      Igor Babaev authored
      The bug caused crashes of the server when processing queries with nested
      table value constructors (TVC) . It happened because the grammar rules to
      parse TVC used the same global lists for both nested TVC and nesting TVC.
      As a result invalid select trees were constructed for queries with nested
      TVC and this led to crashes at the prepare stage.
      This patch provides its own lists structures for each TVC nest level.
      
      Besides the patch fixes a bug in the function wrap_tvc() that missed
      inheritance of the SELECT_LEX::exclude_from_table_unique_test for
      selects that wrapped TVCs. This inheritance is critical for specifications
      of derived tables that employ nested TVCs.
      
      Approved by dmitry.shulga@mariadb.com
      08d8bce5
  11. 03 Mar, 2021 4 commits
  12. 02 Mar, 2021 2 commits
    • Monty's avatar
      MDEV-24532 Table corruption ER_NO_SUCH_TABLE_IN_ENGINE .. on table with foreign key · 676987c4
      Monty authored
      When doing a truncate on an Innodb under lock tables, InnoDB would rename
      the old table to #sql-... and recreate a new 't1' table. The table lock
      would still be on the #sql-table.
      
      When doing ALTER TABLE, Innodb would do the changes on the #sql table
      (which would disappear on close).
      When the SQL layer, as part of inline alter table, would close the
      original t1 table (#sql in InnoDB) and then reopen the t1 table, Innodb
      would notice that this does not match it's own (old) t1 table and
      generate an error.
      
      Fixed by adding code in truncate table that if we are under lock tables
      and truncating an InnoDB table, we would close, reopen and lock the
      table after truncate. This will remove the #sql table and ensure that
      lock tables is using the new empty table.
      
      Reviewer: Marko Mäkelä
      676987c4
    • Monty's avatar
      MDEV-23843 Assertions in Diagnostics_area upon table operations under FTWRL · 82efe4a1
      Monty authored
      Fixed binary logging in ANALYZE TABLE to work as optimize table
      82efe4a1