1. 23 Jul, 2018 1 commit
    • Marko Mäkelä's avatar
      Follow-up to MDEV-12266: Remove latch_t::m_temp_fsp · b9865b28
      Marko Mäkelä authored
      There is only one temporary tablespace. Reserving a data member in
      each read-write lock object for a Boolean flag seems like a huge waste,
      especially because this field was only actually used in debug builds.
      
      LatchDebug::check_order(): Compare to fil_system.temp_space->latch.
      b9865b28
  2. 14 Jul, 2018 1 commit
  3. 09 Jul, 2018 1 commit
    • Jacob Mathew's avatar
      MDEV-16246: insert timestamp into spider table from mysqldump gets wrong time zone. · 813b7398
      Jacob Mathew authored
      The problem occurred because the Spider node was incorrectly handling
      timestamp values sent to and received from the data nodes.
      
      The problem has been corrected as follows:
      - Added logic to set and maintain the UTC time zone on the data nodes.
        To prevent timestamp ambiguity, it is necessary for the data nodes to use
        a time zone such as UTC which does not have daylight savings time.
      - Removed the spider_sync_time_zone configuration variable, which did not
        solve the problem and which interfered with the solution.
      - Added logic to convert to the UTC time zone all timestamp values sent to
        and received from the data nodes.  This is done for both unique and
        non-unique timestamp columns.  It is done for WHERE clauses, applying to
        SELECT, UPDATE and DELETE statements, and for UPDATE columns.
      - Disabled Spider's use of direct update when any of the columns to update is
        a timestamp column.  This is necessary to prevent false duplicate key value
        errors.
      - Added a new test spider.timestamp to thoroughly test Spider's handling of
        timestamp values.
      
      Author:
        Jacob Mathew.
      
      Reviewer:
        Kentoku Shiba.
      
      Cherry-Picked:
        Commit 97cc9d34 on branch bb-10.3-MDEV-16246
      813b7398
  4. 07 Jul, 2018 2 commits
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · bbf780ef
      Marko Mäkelä authored
      bbf780ef
    • Marko Mäkelä's avatar
      MDEV-16664: Change the default to innodb_lock_schedule_algorithm=fcfs · 1cc1d042
      Marko Mäkelä authored
      The parameter innodb_lock_schedule_algorithm was introduced in
      MariaDB Server 10.1.19, 10.2.13, 10.3.4 as part of MDEV-11039.
      In MariaDB 10.1, the default value of the parameter is 'fcfs',
      that is, the existing algorithm is used by default. But in
      later versions of MariaDB Server, the parameter was 'vats',
      enabling the new algorithm.
      
      Because the new algorithm is triggering a debug assertion failure
      that suggests corruption of the transactional lock data structures,
      we will revert to the old algorithm by default until we have
      resolved the problem.
      1cc1d042
  5. 06 Jul, 2018 3 commits
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 934d5f95
      Marko Mäkelä authored
      934d5f95
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-15855 Deadlock between purge thread and DDL statement · 8b0d4cff
      Thirunarayanan Balathandayuthapani authored
      Problem:
      ========
      Truncate operation holds MDL on the table (t1) and tries to
      acquire InnoDB dict_operation_lock. Purge holds dict_operation_lock
      and tries to acquire MDL on the table (t1) to evaluate virtual
      column expressions for indexed virtual columns.
      It leads to deadlock of purge and truncate table (DDL).
      
      Solution:
      =========
      If purge tries to acquire MDL on the table then it should do the following:
      
      i) Purge should release all innodb latches (including dict_operation_lock)
      before acquiring metadata lock on the table.
      
      ii) After acquiring metadata lock on the table, it should check whether the
      table was dropped or renamed. If the table is dropped then purge should
      ignore the undo log record. If the table is renamed then it should
      release the old MDL and acquire MDL on the new name.
      
      iii) Once purge acquires MDL, it should use the SQL table handle for all
      the remaining virtual index for the purge record.
      
      purge_node_t: Introduce new virtual column information to know whether
      the MDL was acquired successfully.
      
      This is joint work with Marko Mäkelä.
      8b0d4cff
    • Marko Mäkelä's avatar
      MDEV-14188 mariabackup.incremental_encrypted wrong result · e3207b6c
      Marko Mäkelä authored
      Add an explicit redo log flush. In this test
      innodb_flush_log_at_trx_commit was 2 by default.
      It is also possible that this failure occurs because of MDEV-15740.
      e3207b6c
  6. 05 Jul, 2018 7 commits
  7. 03 Jul, 2018 4 commits
    • Marko Mäkelä's avatar
      MDEV-16675 Unnecessary explicit lock acquisition during UPDATE or DELETE · 1748a31a
      Marko Mäkelä authored
      In InnoDB, an INSERT will not create an explicit lock object. Instead,
      the inserted record is initially implicitly locked by the transaction
      that wrote its trx_t::id to the hidden system column DB_TRX_ID.
      (Other transactions would check if DB_TRX_ID is referring to a
      transaction that has not been committed.)
      
      If a record was inserted in the current transaction, it would be
      implicitly locked by that transaction. Only if some other transaction
      is requesting access to the record, the implicit lock should be
      converted to an explicit one, so that the waits-for graph can be
      constructed for detecting deadlocks and lock wait timeouts.
      
      Before this fix, InnoDB would convert implicit locks to
      explicit ones, even if no conflict exists.
      
      lock_rec_convert_impl_to_expl(): Return whether caller_trx
      already holds an explicit lock that covers the record.
      
      row_vers_impl_x_locked_low(): Avoid a lookup if the record matches
      caller_trx->id.
      
      lock_trx_has_expl_x_lock(): Renamed from lock_trx_has_rec_x_lock().
      
      row_upd_clust_step(): In a debug assertion, check for implicit lock
      before invoking lock_trx_has_expl_x_lock().
      
      rw_trx_hash_t::find(): Make do_ref_count a mandatory parameter.
      Assert that trx_id is not 0 (the caller should check it).
      
      trx_sys_t::is_registered(): Only invoke find() if id != 0.
      
      trx_sys_t::find(): Add the optional parameter do_ref_count.
      
      lock_rec_queue_validate(): Avoid lookup for trx_id == 0.
      1748a31a
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 186a998b
      Marko Mäkelä authored
      186a998b
    • Marko Mäkelä's avatar
      Merge mariadb-10.3.8 into 10.3 · c3289d27
      Marko Mäkelä authored
      c3289d27
    • Daniel Bartholomew's avatar
      bump the VERSION · 358ae4b4
      Daniel Bartholomew authored
      358ae4b4
  8. 02 Jul, 2018 6 commits
  9. 01 Jul, 2018 4 commits
  10. 30 Jun, 2018 9 commits
  11. 29 Jun, 2018 2 commits