1. 29 Jan, 2021 3 commits
    • Vladislav Vaintroub's avatar
      MDEV-24685 - remove IO thread states output from SHOW ENGINE INNODB STATUS · d8373fea
      Vladislav Vaintroub authored
      There are no IO threads anymore.
      d8373fea
    • Sergei Petrunia's avatar
      MDEV-9750: Quick memory exhaustion with 'extended_keys=on' ... · c3672038
      Sergei Petrunia authored
      (Variant #5, full patch, for 10.5)
      
      Do not produce SEL_ARG graphs that would yield huge numbers of ranges.
      Introduce a concept of SEL_ARG graph's "weight". If we are about to
      produce a graph whose "weight" exceeds the limit, remove the parts
      of SEL_ARG graph that represent the biggest key parts. Do so until
      the graph's is within the limit.
      
      Includes
      - debug code to verify SEL_ARG graph weight
      - A user-visible @@optimizer_max_sel_arg_weight to control the optimization
      - Logging the optimization into the optimizer trace.
      c3672038
    • sjaakola's avatar
      MDEV-24721 galera.mysql-wsrep-bugs-607 test failure · a2eb974b
      sjaakola authored
      The implementation for MDEV-17048 apperas to be direct copy from mysql version.
      The group commit works differently in mariadb and the assert in wsrep_unregister_from_group_commit() is too strict.
      
      The reason is that in: Wsrep_high_priority_service::log_dummy_write_set(), the transaction will undergo full rollback:
          {
            cs.before_rollback();
            cs.after_rollback();
          }
      
      After that, the client's transaction state is set to be:  wsrep::transaction::s_aborted.
      The execution then continues execution by:
      
      ...
       wsrep_register_for_group_commit(m_thd);
      ...
       wsrep_unregister_from_group_commit(m_thd);
      
      The bogus assert in wsrep_unregister_from_group_commit() allows only transactions states of :s_ordered_commit or s_aborting.
      
      As the fix, I brought back the same assert as is present in MariaDB 10.4 version.
      a2eb974b
  2. 28 Jan, 2021 5 commits
    • Anel Husakovic's avatar
      MDEV-24093: Detect during mysql_upgrade if type_mysql_json.so is needed and load it · 85130c5a
      Anel Husakovic authored
      a. The change makes `mariadb-upgrade` detect if `MYSQL_JSON` data type is needed.
      b. Install the data type if it's not installed.
      c. Uninstalls the data type once finished.
      d. Create `.opt` and `.inc` files `have_type_mysql_json` and adapt the
      tests
      
      Reviewed by: vicentiu@mariadb.org
      85130c5a
    • Marko Mäkelä's avatar
      MDEV-24564 Statistics are lost after ALTER TABLE · 6d1f1b61
      Marko Mäkelä authored
      Ever since commit 007f68c3,
      ALTER TABLE no longer invokes handler::open() after
      handler::commit_inplace_alter_table().
      
      ha_innobase::reload_statistics(): Reload or recompute statistics
      after ALTER TABLE.
      
      innodb_notify_tabledef_changed(): A new function to invoke
      ha_innobase::reload_statistics().
      
      handlerton::notify_tabledef_changed(): Add the parameter handler*
      so that ha_innobase::reload_statistics() can be invoked.
      
      ha_partition::notify_tabledef_changed(),
      partition_notify_tabledef_changed(): Pass through the call
      to any partitions or subpartitions.
      
      This is based on code that was supplied by Monty.
      6d1f1b61
    • Vlad Lesin's avatar
      744e9752
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-24695 Encryption modifies a freed page · 6e80a34d
      Thirunarayanan Balathandayuthapani authored
      During recovery, InnoDB fails if it tries to apply a FREE_PAGE
      and WRITE record to the page. InnoDB encryption thread accesses
      the freed page and writes redo log for it.
      
      This is similar to commit deadec4e (MDEV-24569)
      InnoDB is missing buf_page_free() while freeing the segment.
      To avoid accessing of freed page in buffer pool, InnoDB should
      mark the pages as FREED while freeing the segment. Also to
      avoid reading of freed page, InnoDB should check the
      allocation bitmap page.
      
      fseg_free_step(): Mark the page in buffer pool as FREED
      
      fseg_free_step_not_header(): Mark the page in buffer pool as FREED
      
      buf_dump(): Ignore the freed pages while dumping the buffer pool content
      
      fil_crypt_get_page_throttle_func(): Skip the rotation for FREED page
      to avoid the assert failure during recovery
      
      fil_crypt_rotate_page(): Skip the rotation for the freed page
      
      Reviewed-by: Marko Mäkelä
      6e80a34d
    • Marko Mäkelä's avatar
      c6308355
  3. 27 Jan, 2021 3 commits
  4. 26 Jan, 2021 1 commit
  5. 25 Jan, 2021 8 commits
  6. 23 Jan, 2021 2 commits
    • Marko Mäkelä's avatar
      MDEV-24661: Disable an unstable test · 5adcb2e7
      Marko Mäkelä authored
      5adcb2e7
    • Marko Mäkelä's avatar
      MDEV-24659 Assertion !fsp_is_system_temporary(bpage->id().space()) failed in... · 84b8f529
      Marko Mäkelä authored
      MDEV-24659 Assertion !fsp_is_system_temporary(bpage->id().space()) failed in buf_flush_relocate_on_flush_list()
      
      When commit 5eb53955 (MDEV-12227)
      removed the pages of temporary tables from the buf_pool.flush_list,
      an adjustment to the buffer pool resizing was forgotten.
      
      buf_pool_t::realloc(): Do not invoke buf_flush_relocate_on_flush_list()
      for pages that belong to the temporary tablespace. Also, deduplicate
      some code at the end.
      
      buf_page_t::set_corrupt_id(): Tolerate oldest_modification()==1
      (the dummy value) for temporary tablespace pages. The revised
      buf_pool_t::realloc() may invoke this on dirty temporary tablespace pages.
      84b8f529
  7. 22 Jan, 2021 4 commits
  8. 21 Jan, 2021 4 commits
    • Sergei Golubchik's avatar
      MDEV-24593 Signal 11 when group by primary key of table joined to information_schema.columns · 4e503aec
      Sergei Golubchik authored
      I_S tables were materialized too late, an attempt to use table
      statistics before the table was created caused a crash.
      
      Let's move table creation up. it only needs read_set to
      be calculated properly, this happens in JOIN::optimize_inner(),
      after semijoin transformation.
      
      Note that tables are not populated at that point, so most of the
      statistics would make no sense anyway. But at least field sizes
      will be correct. And it won't crash.
      4e503aec
    • Sergei Golubchik's avatar
      remove now-unused rdiff file · 61feb568
      Sergei Golubchik authored
      61feb568
    • Monty's avatar
      MDEV-24452 ALTER TABLE event take infinite time which for example breaks mysql_upgrade · 6eb1eed5
      Monty authored
      The problem was that update_timing_fields_for_event() didn't release all
      MDL locks it took.
      6eb1eed5
    • Jan Lindström's avatar
      MDEV-24596 : Assertion `state_ == s_exec || state_ == s_quitting' failed in... · be5fce16
      Jan Lindström authored
      MDEV-24596 : Assertion `state_ == s_exec || state_ == s_quitting' failed in wsrep::client_state::disable_streaming
      
      There were multiple problems here
      * wsrep_trx_fragment_size should not be set when wsrep is disabled or provider is not loaded
      * wsrep_trx_fragment_unit should not be set when wsrep is disabled or provider is not loaded
      * wsrep_debug has no effect if wsrep is disabled or provider is not loaded
      * wsrep_start_position should not be set when wsrep is disabled or provider is not loaded any other value than default
      * wsrep_start_position should be changed only when we are joiner or initialized
      * wsrep_start_position should be allowed to set only a value that exits, thus
      we need to add error handling to wsrep_sst_complete
      be5fce16
  9. 20 Jan, 2021 1 commit
    • sjaakola's avatar
      MDEV-21153 Replica nodes crash due to indexed virtual columns and FK cascading delete · 9377e9ba
      sjaakola authored
      Fix for MDEV-23033 fixes a problem in replication applying of transactions, which contain cascading foreign key delete for a table, which has indexed virtual column.
      This fix adds slave_fk_event_map flag for table, to mark when the prelocking is needed for applying of a transaction.
      See commit 608b0ee5 for more details.
      However, this fix is targeted for async replication only, Rows_log_event::do_apply_event() has condition to rule out galera replication from the fix domain, and use cases suffering from MDEV-23033 and related MDEV-21153 will fail in galera cluster.
      
      The fix in this commit removes the condition to rule out the setting of slave_fk_event_map flag from galera replication, and makes the fix in MDEV-23033 effective for galera replication as well.
      
      However, the above fix has caused regressions for some galera_sr suite tests, which run tests for streaming replication.
      This regression can be observed e.g. by: /mtr galera_sr.galera_sr_multirow_rollback  --mysqld=--slave_run_triggers_for_rbr=yes
      These galera_sr suite tests were failing in last phase of replication applying, where actual transaction is already applied, and streaming replication related meta data needs to be updated in wsrep system tables.
      Opening the wsrep system tables failed for corrupt data in THD::lex:query_tables_list. The fix in this commit uses back query table list for the duration of fragment update operation.
      
      Finally, a mtr test for virtual column support has been added. galera.galera_virtual_column.test has as first test a scenario from MDEV-21153
      
      new fix
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      9377e9ba
  10. 19 Jan, 2021 4 commits
    • sjaakola's avatar
      MDEV-21153 Replica nodes crash due to indexed virtual columns and FK cascading delete · 7d04ce6a
      sjaakola authored
      Fix for MDEV-23033 fixes a problem in replication applying of transactions, which contain cascading foreign key delete for a table, which has indexed virtual column.
      This fix adds slave_fk_event_map flag for table, to mark when the prelocking is needed for applying of a transaction.
      See commit 608b0ee5 for more details.
      However, this fix is targeted for async replication only, Rows_log_event::do_apply_event() has condition to rule out galera replication from the fix domain, and use cases suffering from MDEV-23033 and related MDEV-21153 will fail in galera cluster.
      
      The fix in this commit removes the condition to rule out the setting of slave_fk_event_map flag from galera replication, and makes the fix in MDEV-23033 effective for galera replication as well.
      
      Finally, a mtr test for virtual column support has been added. galera.galera_virtual_column.test has as first test a scenario from MDEV-21153
      Reviewed-by: default avatarJan Lindström <jan.lindstrom@mariadb.com>
      7d04ce6a
    • Dmitry Shulga's avatar
      MDEV-24577: Fix warnings generated during compilation of... · 8bcddb02
      Dmitry Shulga authored
      MDEV-24577: Fix warnings generated during compilation of plugin/auth_pam/testing/pam_mariadb_mtr.c on FreeBSD
      
      Compiler warnings generated on building MariaDB server for BSD has the same
      reason as in case building is performed on MacOS. Both platforms do use
      clang as a C/C++ compiler. So, fix the compiler warnings in case the compiler
      is clang doesn't matter what kind of building platform do we use for building.
      
      This is a follow-up patch for the following bug reports:
        MDEV-23564: CMAKE failing due to deprecated Apple GSS method
        MDEV-23935: Fix warnings generated during compilation of
                    plugin/auth_pam/testing/pam_mariadb_mtr.c on MacOS
      8bcddb02
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 049811ec
      Marko Mäkelä authored
      049811ec
    • Vlad Lesin's avatar
      MDEV-24612: innodb hangs if it's initialization is broken before encryption threads are started · 9930cb22
      Vlad Lesin authored
      Do not init encryption threads if shutdown is in progress.
      9930cb22
  11. 17 Jan, 2021 1 commit
  12. 15 Jan, 2021 4 commits
    • Monty's avatar
      Code cleanups · a5b54f78
      Monty authored
      - Fix long lines to be <= 80 character
      - Trivial changes (no logic changes)
      a5b54f78
    • Monty's avatar
      Fixed some possible usage of freed memory · 9a60e89a
      Monty authored
      - Create_tmp_table::finalize didn't clear file after delete which
        could cause a double free. This is however not a likely problem as
        this code path is very unlikely to happen
      - free_tmp_table() could do handler calls even if the table was never
        opened. Fixed by adding a test if the table is opened.
      9a60e89a
    • Marko Mäkelä's avatar
      MDEV-24600 performance_schema.events_transactions_history_long.trx_id reports garbage · 76b58c2a
      Marko Mäkelä authored
      The table performance_schema.events_transactions_history_long that
      was imported from MySQL 5.7.28 in
      commit 0ea717f5
      may report bogus trx_id values for InnoDB transactions.
      
      innobase_register_trx(): Pass trx->id to trans_register_ha(),
      even if it is 0. It is more appropriate to report NULL than some
      arbitrary value that has been constructed from the address of a
      transaction identifier.
      76b58c2a
    • David Carlier's avatar
      msys: detects crc/cryptosupport on FreeBSD/arm · d79141d6
      David Carlier authored
      closes #1737
      
      Reviewers: Marko Mäkelä, Krunal Bauskar
      d79141d6