1. 08 Apr, 2019 2 commits
    • Marko Mäkelä's avatar
      MDEV-15584: Do not invoke open(dir=NULL) · 1e7ad5bb
      Marko Mäkelä authored
      On Linux, <fcntl.h> declares open(2) as having a nonnull first argument.
      In GCC 8, if a function with nonnull argument is called, that argument
      will be silently assumed to nonnull along the same code path. Hence,
      later nullness checks for this argument can be optimized away.
      
      Similar to MDEV-15587, the fix is to ensure that functions with
      nonnull arguments are not being called with NULL.
      
      This bug caused a crash in mysqlbinlog, which was invoking
      create_temp_file() with the argument dir=NULL. The affected test was
      binlog.binlog_mysqlbinlog_base64. It would display the following message
      before crashing:
      
      mysqlbinlog: O_TMPFILE is not supported on (null) (disabling future attempts)
      Segmentation fault
      1e7ad5bb
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · d8303c3e
      Marko Mäkelä authored
      d8303c3e
  2. 07 Apr, 2019 4 commits
  3. 06 Apr, 2019 14 commits
    • Marko Mäkelä's avatar
      MDEV-12699 preparation: Clean up recv_sys · 1d30b7b1
      Marko Mäkelä authored
      The recv_sys data structures are accessed not only from the thread
      that executes InnoDB plugin initialization, but also from the
      InnoDB I/O threads, which can invoke recv_recover_page().
      
      Assert that sufficient concurrency control is in place.
      Some code was accessing recv_sys data structures without
      holding recv_sys->mutex.
      
      recv_recover_page(bpage): Refactor the call from buf_page_io_complete()
      into a separate function that performs necessary steps. The
      main thread was unnecessarily releasing and reacquiring recv_sys->mutex.
      
      recv_recover_page(block,mtr,recv_addr): Pass more parameters from
      the caller. Avoid redundant lookups and computations. Eliminate some
      redundant variables.
      
      recv_get_fil_addr_struct(): Assert that recv_sys->mutex is being held.
      That was not always the case!
      
      recv_scan_log_recs(): Acquire recv_sys->mutex for the whole duration
      of the function. (While we are scanning and buffering redo log records,
      no pages can be read in.)
      
      recv_read_in_area(): Properly protect access with recv_sys->mutex.
      
      recv_apply_hashed_log_recs(): Check recv_addr->state only once,
      and continuously hold recv_sys->mutex. The mutex will be released
      and reacquired inside recv_recover_page() and recv_read_in_area(),
      allowing concurrent processing by buf_page_io_complete() in I/O threads.
      1d30b7b1
    • Marko Mäkelä's avatar
      MDEV-12699 preparation: Write MLOG_INDEX_LOAD for FTS_ tables · aa3f7a10
      Marko Mäkelä authored
      The record MLOG_INDEX_LOAD is supposed to be written to indicate that
      some page modifications bypassed redo logging, and that redo logging
      is now re-enabled. It was not written for fulltext indexes during
      ALTER TABLE.
      
      row_merge_write_redo(): Declare globally. Assert that the index
      is neither a spatial nor fulltext index.
      
      recv_mlog_index_load(): Observe a MLOG_INDEX_LOAD operation.
      
      recv_parse_log_recs(): Handle MLOG_INDEX_LOAD also in multi-record
      mini-transactions. Because of this omission, we should keep writing
      MLOG_INDEX_LOAD in single-record mini-transactions, because older
      versions of Mariabackup would fail.
      
      row_fts_merge_insert(): Write MLOG_INDEX_LOAD for the auxiliary
      tables of fulltext indexes.
      aa3f7a10
    • Marko Mäkelä's avatar
      MDEV-12699 preparation: Initialize the entire page on MLOG_ZIP_PAGE_COMPRESS · 45d338dc
      Marko Mäkelä authored
      The record MLOG_ZIP_PAGE_COMPRESS is similar to MLOG_INIT_FILE_PAGE2
      that it contains all the information needed to initialize the page.
      Like for the other record, do initialize the entire page on recovery.
      45d338dc
    • Marko Mäkelä's avatar
      buf_page_get_gen(): Allow BUF_GET_IF_IN_POOL with a dummy page_size · 1b95118c
      Marko Mäkelä authored
      The page_size argument to buf_page_get_gen() only matters when the
      page is going to be loaded into the buffer pool. Allow callers to
      pass a dummy parameter when using BUF_GET_IF_IN_POOL (which would
      return NULL if the block is not in the buffer pool).
      1b95118c
    • Marko Mäkelä's avatar
      Fix a crash in CHECK TABLE for corrupted encrypted root page · 80f29211
      Marko Mäkelä authored
      btr_root_get(): Ignore the root->page.encrypted flag.
      The purpose of this flag is questionable since
      commit 8c43f963.
      
      btr_validate_index(): Avoid crash if btr_root_get() returns NULL.
      80f29211
    • Marko Mäkelä's avatar
      MDEV-15528 preparation: Do not modify a freed page · 1d0380e0
      Marko Mäkelä authored
      btr_free_root(): Add the parameter bool invalidate.
      
      btr_free_root_invalidate(): Remove.
      1d0380e0
    • Marko Mäkelä's avatar
      Clean up the parsing of MLOG_INIT_FILE_PAGE2 · 56df18be
      Marko Mäkelä authored
      fsp_apply_init_file_page(): Renamed from fsp_init_file_page_low().
      
      fsp_parse_init_file_page(): Remove. The redo log record has no
      parameters.
      56df18be
    • Marko Mäkelä's avatar
      recv_recovery_is_on(): Add UNIV_UNLIKELY · 71f9552f
      Marko Mäkelä authored
      Normally, InnoDB is not in the process of executing crash recovery.
      Provide a hint to the compiler that the recovery-related code paths
      are rarely executed.
      71f9552f
    • Marko Mäkelä's avatar
      Re-record plugins.feedback_plugin_load · c56ae2df
      Marko Mäkelä authored
      c56ae2df
    • Teemu Ollakka's avatar
      Fixed wsrep replaying for stored procedures (#1256) · eb872ceb
      Teemu Ollakka authored
      - Changed replaying to always allocate a separate THD object
        for applying log events. This is to avoid tampering original
        THD state during replay process.
      - Return success from sp_instr_stmt::exec_core() if replaying
        succeeds.
      - Do not push warnings/errors into diagnostics area if the
        transaction must be replayed. This is to avoid reporting
        transient errors to the client.
      
      Added two tests galera_sp_bf_abort, galera_sp_insert_parallel.
      Wsrep-lib position updated.
      eb872ceb
    • Jan Lindström's avatar
      MDEV-18265: Replace deprecated variable debug to debug_dbug on Galera tests · fe62ff6e
      Jan Lindström authored
      	deleted:    mysql-test/suite/galera/r/MW-86.result
      	deleted:    mysql-test/suite/galera/r/mysql-wsrep#216.result
      	modified:   mysql-test/suite/galera/t/GCF-1081.test
      	modified:   mysql-test/suite/galera_3nodes_sr/r/GCF-832.result
      	modified:   mysql-test/suite/galera_3nodes_sr/t/GCF-810A.test
      	modified:   mysql-test/suite/galera_3nodes_sr/t/GCF-810B.test
      	modified:   mysql-test/suite/galera_3nodes_sr/t/GCF-810C.test
      	modified:   mysql-test/suite/galera_3nodes_sr/t/GCF-832.test
      	modified:   mysql-test/suite/galera_sr/r/mysql-wsrep-features#35.result
      	modified:   mysql-test/suite/galera_sr/t/mysql-wsrep-features#35.test
      fe62ff6e
    • Sergei Golubchik's avatar
      update test results · 8a194d99
      Sergei Golubchik authored
      8a194d99
    • Alexander Barkov's avatar
    • Igor Babaev's avatar
      MDEV-18956 Assertion `sel->quick' failed in JOIN::make_range_rowid_filters · 18bf0bf4
      Igor Babaev authored
      If SUBS_IN_TO_EXISTS strategy has been chosen for a subquery then
      additional conditions are injected into WHERE/ON/HAVING of this subquery
      and it may happen that test_quick_select() invoked from
      JOIN::make_range_rowid_filters() discovers impossible range. This
      must be checked.
      18bf0bf4
  4. 05 Apr, 2019 6 commits
  5. 04 Apr, 2019 6 commits
  6. 03 Apr, 2019 8 commits
    • Marko Mäkelä's avatar
      MDEV-18836: Adjust a suppression · b718ec05
      Marko Mäkelä authored
      Normally, InnoDB will create temporary table names of the form
      #sql-ibNNNN, and with innodb_safe_truncate=OFF, #sql-ibNNNN-MMMM.
      b718ec05
    • Marko Mäkelä's avatar
      Fix the non-debug build · c676de16
      Marko Mäkelä authored
      c676de16
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 28636a92
      Marko Mäkelä authored
      28636a92
    • Marko Mäkelä's avatar
      MDEV-18733 MariaDB slow start after crash recovery · cad56fba
      Marko Mäkelä authored
      If InnoDB crash recovery was needed, the InnoDB function srv_start()
      would invoke extra validation, reading something from every InnoDB
      data file. This should be unnecessary now that MDEV-14717 made
      RENAME operations crash-safe inside InnoDB (which can be
      disabled in MariaDB 10.2 by setting innodb_safe_truncate=OFF).
      
      dict_check_sys_tables(): Skip tables that would be dropped by
      row_mysql_drop_garbage_tables(). Perform extra validation only
      if innodb_safe_truncate=OFF, innodb_force_recovery=0 and
      crash recovery was needed.
      
      dict_load_table_one(): Validate the root page of the table.
      In this way, we can deny access to corrupted or mismatching tables
      not only after crash recovery, but also after a clean shutdown.
      cad56fba
    • Marko Mäkelä's avatar
      7984ea80
    • Marko Mäkelä's avatar
      Fix clang -Wunused-private-field · 6a9b2163
      Marko Mäkelä authored
      6a9b2163
    • Marko Mäkelä's avatar
      Remove unused declarations · 1f3bcff1
      Marko Mäkelä authored
      1f3bcff1
    • Eugene Kosov's avatar
      MDEV-13301 Optimize DROP INDEX, ADD INDEX into RENAME INDEX · 3a3d5ba2
      Eugene Kosov authored
      Just rename index in data dictionary and in InnoDB cache when it's possible.
      Introduce ALTER_INDEX_RENAME for that purpose so that engines can optimize
      such operation.
      
      Unused code between macro MYSQL_RENAME_INDEX was removed.
      
      compare_keys_but_name(): compare index definitions except for index names
      
      Alter_inplace_info::rename_keys:
      ha_innobase_inplace_ctx::rename_keys: vector of rename indexes
      
      fill_alter_inplace_info():: fills Alter_inplace_info::rename_keys
      3a3d5ba2