1. 13 Nov, 2015 3 commits
    • Kristian Nielsen's avatar
      MDEV-7818: Deadlock occurring with parallel replication and FTWRL · ba025501
      Kristian Nielsen authored
      Problem is that FLUSH TABLES WITH READ LOCK first blocks threads from
      starting new commits, then waits for running commits to complete. But
      in-order parallel replication needs commits to happen in a particular
      order, so this can easily deadlock.
      
      To fix this problem, this patch introduces a way to temporarily pause
      the parallel replication worker threads. Before starting FTWRL, we let
      all worker threads complete in-progress transactions, and then
      wait. Then we proceed to take the global read lock. Once the lock is
      obtained, we unpause the worker threads. Now commits are blocked from
      starting by the global read lock, so the deadlock will no longer occur.
      ba025501
    • Kristian Nielsen's avatar
      MDEV-7818: Deadlock occurring with parallel replication and FTWRL · 6d96fab7
      Kristian Nielsen authored
      Preparation patch, moving the GCO wait into a separate function, in
      preparation for adding a separate wait phase for FLUSH TABLES WITH
      READ LOCK.
      6d96fab7
    • Kristian Nielsen's avatar
      Change Seconds_behind_master to be updated only at commit in parallel replication · 75dc2671
      Kristian Nielsen authored
      Before, the Seconds_behind_master was updated already when an event
      was queued for a worker thread to execute later. This might lead users
      to interpret a low value as the slave being almost up to date with the
      master, while in reality there might still be lots and lots of events
      still queued up waiting to be applied by the slave.
      
      See https://lists.launchpad.net/maria-developers/msg08958.html for
      more detailed discussions.
      75dc2671
  2. 10 Oct, 2015 1 commit
  3. 09 Oct, 2015 15 commits
  4. 08 Oct, 2015 9 commits
  5. 06 Oct, 2015 8 commits
    • Sergei Petrunia's avatar
      MDEV-8903: Buildbot valgrind failure: Invalid read of size 1 in sql_memdup... · 4a602046
      Sergei Petrunia authored
      When we calculate max_key_len for RANGE_OPT_PARAM::min_key/max_key, take
      into account that QUICK_RANGE::QUICK_RANGE for some reason assumes
      that there is one more byte there:
      
            max_key((uchar*) sql_memdup(max_key_arg,max_length_arg+1)),
      4a602046
    • Sergei Petrunia's avatar
      Fix for MDEV-8321, MDEV-6223 · 12897947
      Sergei Petrunia authored
      EXPLAIN INSERT ... SELECT tried to use SELECT's execution path. This
      caused a collection of problems:
      - SELECT_DESCRIBE flag was not put into select_lex->options, which
        means it was not in JOIN::select_options either (except for the first
        member of the UNION).
      - This caused UNION members to be executed. They would attempt to write
        join output rows to the output.
      - (Actual cause of the crash) second join sibling would call
        result->send_eof() when finished execution. Then,
        Explain_query::print_explain would attempt to write to query output
        again, and cause an assertion due to non-empty query output.
      12897947
    • Oleksandr Byelkin's avatar
      MDEV-7846: postreview fix · 504802f3
      Oleksandr Byelkin authored
      504802f3
    • Oleksandr Byelkin's avatar
      MDEV-7846: Server crashes in Item_subselect::fix_fields or fails with Thread stack overrun · 54b99817
      Oleksandr Byelkin authored
      Substitute into transformed subselects original left expression and than register its change in case it was substituted.
      54b99817
    • Oleksandr Byelkin's avatar
      MDEV-7445:Server crash with Signal 6 · 0ab93fd6
      Oleksandr Byelkin authored
      MDEV-7565: Server crash with Signal 6 (part 2)
      
      followup test suite and its fix.
      0ab93fd6
    • Oleksandr Byelkin's avatar
      MDEV-7445: Server crash with Signal 6 · 2e3e8180
      Oleksandr Byelkin authored
      Problem was in rewriting left expression which had 2 references on it. Solved with making subselect reference main.
      
      Item_in_optimized can have not Item_in_subselect reference in left part so type casting with no check is dangerous.
      
      Item::cols() should be checked after Item::fix_fields().
      2e3e8180
    • Oleksandr Byelkin's avatar
      MDEV-7565: Server crash with Signal 6 (part 2) · 7ccde2cb
      Oleksandr Byelkin authored
      Preparation of subselect moved earlier (before checks which needs it prepared).
      7ccde2cb
    • Sergei Petrunia's avatar
      MDEV-8299: MyISAM or Aria table gets corrupted after EXPLAIN INSERT and INSERT · a7dd24cd
      Sergei Petrunia authored
      [EXPLAIN] INSERT .. SELECT creates a select_insert object.
      select_insert calls handler->start_bulk_insert() during
      initialization.
      
      For MyISAM/Aria this requires that a matching call to
      handler->end_bulk_insert() call is made.
      
      Regular INSERT .. SELECT accomplishes this by calling either
      select_result->send_eof() or select_result->abort_result_set().
      
      EXPLAIN INSERT ... SELECT didn't call either, which resulted in
      improper de-initializaiton of handler object. Make it call
      abort_result_set(), which invokes handler->end_bulk_insert().
      a7dd24cd
  6. 01 Oct, 2015 2 commits
    • Sergey Vojtovich's avatar
      MDEV-8379 - SUSE mariadb patches · bb22eb55
      Sergey Vojtovich authored
      Corrected variable name in dead code for consistency.
      
      Patch contributed by Michal Hrusecky.
      bb22eb55
    • Sergey Vojtovich's avatar
      MDEV-8379 - SUSE mariadb patches · 727da9c8
      Sergey Vojtovich authored
      Fixed unclean prototype declaration. According to ISO/IEC 9899:TC2:
      ...
      10. The special case of an unnamed parameter of type void as the only item in
          the list specifies that the function has no parameters.
      ...
      14. An identifier list declares only the identifiers of the parameters of the
          function. An empty list in a function declarator that is part of a
          definition of that function specifies that the function has no parameters.
          The empty list in a function declarator that is not part of a definition of
          that function specifies that no information about the number or types of the
          parameters is supplied. 124)
      ...
      6.11.6 Function declarators
      
      The use of function declarators with empty parentheses (not prototype-format
      parameter type declarators) is an obsolescent feature.
      ...
      
      Patch contributed by Michal Hrusecky.
      727da9c8
  7. 30 Sep, 2015 1 commit
  8. 29 Sep, 2015 1 commit