1. 08 Apr, 2018 3 commits
    • Marko Mäkelä's avatar
      Minor clean-up of purge code · df44e75b
      Marko Mäkelä authored
      purge_sys_t::n_submitted: Document that it is only accessed by
      srv_purge_coordinator_thread.
      
      purge_sys_t::n_completed: Exclusively use my_atomic access.
      
      srv_task_execute(): Simplify the code.
      
      srv_purge_coordinator_thread(): Test the cheaper condition first.
      
      trx_purge(): Atomically access purge_sys.n_completed.
      Remove some code duplication.
      
      trx_purge_wait_for_workers_to_complete(): Atomically access
      purge_sys.n_completed. Remove an unnecessary local variable.
      
      trx_purge_stop(): Remove a redundant assignment.
      df44e75b
    • Marko Mäkelä's avatar
      Make my_atomic_*lint type-safe · 0f6186c5
      Marko Mäkelä authored
      0f6186c5
    • Marko Mäkelä's avatar
      MDEV-12266 fixup: Fix bug in row_ins_sec_index_entry() · 8beeeddd
      Marko Mäkelä authored
      row_ins_sec_index_entry(): Compare a pointer to fil_system.sys_space,
      not to a numeric constant. This code was recently changed in MDEV-13637,
      and the condition was essentially disabled, potentially causing the
      change buffer to grow uncontrollably when something is inserted into
      a table that has secondary indexes and resides in the system tablespace.
      
      Thanks to Daniel Black for pointing out that clang 7 flagged a warning
      for the comparison of a pointer to an integer.
      
      row_import_for_mysql(): Fix a possible compiler warning.
      8beeeddd
  2. 07 Apr, 2018 2 commits
  3. 06 Apr, 2018 2 commits
  4. 05 Apr, 2018 5 commits
  5. 04 Apr, 2018 14 commits
  6. 03 Apr, 2018 6 commits
  7. 02 Apr, 2018 6 commits
    • Galina Shalygina's avatar
      MDEV-15579 Crash in Item_field::used_tables() called by · 6223f1dd
      Galina Shalygina authored
                 Item::derived_field_transformer_for_having
      
      The crash occurred due to an inappropriate handling of multiple equalities
      when pushing conditions into materialized views/derived tables. If equalities
      extracted from a multiple equality can be pushed into a materialized
      view/derived table they should be plainly conjuncted with other pushed
      predicates rather than form a separate AND sub-formula.
      6223f1dd
    • Vladislav Vaintroub's avatar
    • Alexander Barkov's avatar
      Cleanup: removing duplicate code, adding "const", etc · 342d3df6
      Alexander Barkov authored
      - Adding class Field_int as a common
        parent for Field_{longlong|long|short|medium|tiny}
      - Moving store_decimal(), val_decimal(), get_date(), store_time_dec(),
        get_date(), val_bool() from Field_num to Field_int
      - Adding Field_int::val_str_from_long() and reusing it in
        Field_tiny::val_str(), Field_short::val_str(), Field_medium::val_str()
        and Field_long::val_str(). This removes a good amount of duplicate code
      - Adding "const" qualifier to "virtual bool Field::optimize_range()".
      342d3df6
    • Sergey Vojtovich's avatar
      MDEV-14929 - AddressSanitizer: memcpy-param-overlap in Field_longstr::compress · 443b9a41
      Sergey Vojtovich authored
      Handle overlaping "from" and Field_blob_compressed::value for compressed
      blobs similarily to regular blobs.
      443b9a41
    • Monty's avatar
    • Monty's avatar
      Fix for MDEV-14831 · 7d2e2835
      Monty authored
      MDEV-14831 CREATE OR REPLACE SEQUENCE under LOCK TABLE corrupts the
      sequence, causes ER_KEY_NOT_FOUND
      
      The problem was that sequence_insert didn't properly handle the case
      where there where there was a LOCK TABLE while creating the sequence.
      
      Fixed by opening the sequence table, for inserting the first record, in
      a new environment without any other open tables.
      
      Found also a bug in Locked_tables_list::reopen_tables() where the lock
      structure for the new tables was allocated in THD::mem_root, which causes
      crashes. This could cause problems with other create tables done under
      LOCK TABLES.
      7d2e2835
  8. 01 Apr, 2018 2 commits
    • Vladislav Vaintroub's avatar
      MDEV-15694 Windows : use GetSystemTimePreciseAsFileTime if available for high resolution time · 19bb7fdc
      Vladislav Vaintroub authored
      Use high accuracy timer on Windows 8.1+ for system versioning,it needs
      accurate high resoution start query time.
      
      Continue to use the inaccurate (but much faster timer function)
      GetSystemTimeAsFileTime() where accuracy does not matter, e.g in
      set_timespec_time_nsec(),or my_time()
      19bb7fdc
    • Vladislav Vaintroub's avatar
      MDEV-15636 mariabackup --lock-ddl-per-table hangs if ALTER table is running · 27c24808
      Vladislav Vaintroub authored
      concurrently.
      
      There is a deadlock between
      
      C1 mariabackup's connection that holds MDL locks
      C2 Online ALTER TABLE that wants to have MDL exclusively
         and tries to upgrade its mdl lock.
      C3 another mariabackup's connection that does FLUSH TABLES (or FTWRL)
      
      C3 waits waits for C2,  which waits for C1, which waits for C3,
      thus the deadlock.
      
      
      MDL locks cannot be released until FLUSH  succeeds, because
      otherwise it would allow ALTER to sneak in, causing backup to abort and
      breaking lock-ddl-per-table's promise.
      
      The fix here workarounds the deadlock, by killing connections in
      "Waiting for metadata lock" status (i.e ALTER). This killing continues
      until FTWRL succeeds.
      
      Killing connections is skipped in case --no-locks parameter
      was  passed to backup, because there won't be a FLUSH.
      
      For the reference,in Percona's xtrabackup --lock-ddl-per-connection
      silently implies --no-lock ie FLUSH is always skipped there.
      
      A rather large part of fix is introducing DBUG capability to start
      a query  the new connection at the right moment of backup
      compensating somewhat for mariabackup' lack of send_query or DBUG_SYNC.
      27c24808