1. 20 Feb, 2012 3 commits
    • Sergey Petrunya's avatar
      BUG#933412: Server crashes in _mi_put_key_in_record on KILL QUERY with ICP, STRAIGHT_JOIN · c381e440
      Sergey Petrunya authored
      - In mi_rkey(), do correct handling of case where mi_yield_and_check_if_killed() 
        detects that the thread was killed (all other similar functions in MyISAM/Aria have 
        slightly different code and do not have this problem).
      - Also fixed assignment in DBUG_ASSERT
      - this is 2nd variant of the fix:
         = make .result file smaller
         = run KILLable statements in a separate connection, otherwise we could end up trying to 
           KILL the final "DROP TABLE" statement
      c381e440
    • Sergey Petrunya's avatar
      Merge · bd86e37e
      Sergey Petrunya authored
      bd86e37e
    • Sergey Petrunya's avatar
      BUG#933407: Valgrind warnings in mark_as_null_row with... · fecad7c9
      Sergey Petrunya authored
      BUG#933407: Valgrind warnings in mark_as_null_row with materialization+semijoin, STRAIGHT_JOIN, impossible WHERE
      - In return_zero_rows(), don't call mark_as_null_row() for semi-join 
        materialized tables, because 1) they may have been already freed, and 
        2)there is no real need to call mark_as_null_row() for them.
        
      fecad7c9
  2. 19 Feb, 2012 2 commits
    • Igor Babaev's avatar
      Fixed bug #934348. · 3ef46370
      Igor Babaev authored
      This bug is the result of an incomplete/inconsistent change introduced into
      5.3 code when the cond_equal parameter were added to the function optimize_cond.
      The change was made during a merge from 5.2 in October 2010.
      The bug could affect only queries with HAVING.
      3ef46370
    • Igor Babaev's avatar
      Fixed LP bug #934342. · cd81f578
      Igor Babaev authored
      An outer join query with a semi-join subquery could return a wrong result
      if the optimizer chose to materialize the subquery.
      It happened because when substituting for the best field into a ref item
      used to build access keys not all COND_EQUAL objects that could be employed
      at substitution were checked.
      
      Also refined some code in the function check_join_cache_usage to make it
      safer. 
      cd81f578
  3. 17 Feb, 2012 2 commits
    • Sergei Golubchik's avatar
      Remove engine-specific (but identical) icp callbacks. create one reusable · bbb35276
      Sergei Golubchik authored
      common icp callback in the handler.cc.
      
      It can also increment status counters, without making the engine
      dependent on the exact THD layout (that is different in embedded).
      bbb35276
    • Igor Babaev's avatar
      Fixed LP bug #928352. · 2d19b077
      Igor Babaev authored
      This bug led to wrong values of the use_count fields in some SEL_ARG
      trees that triggered complains on the server side when executing the
      test case for LP bug 800184 if a debug build of the server was used.
        
      This was the result of the incomplete fix for bug 800184.
      To complete it the following corrections had to be made:
      - the copy constructor for SEL_TREE must call the new function incr_refs_all()
        instead of the function incr_refs(), because references to next key parts
        from any SEL_ARG tree belonging to the list of the first key part has to be
        adjusted.
      - the method and_sel_tree of the class SEL_IMERGE must use the copy constructor
        of the SEL_TREE class to make a copy of its second argument before it ANDs it
        with any SEL_TREE tree from the processed SEL_IMERGE object.  
         
      
      
      2d19b077
  4. 16 Feb, 2012 3 commits
    • Sergey Petrunya's avatar
      Backport of: · 541334c5
      Sergey Petrunya authored
      timestamp: Thu 2011-12-01 15:12:10 +0100
      Fix for Bug#13430436 PERFORMANCE DEGRADATION IN SYSBENCH ON INNODB DUE TO ICP
      
      When running sysbench on InnoDB there is a performance degradation due
      to index condition pushdown (ICP). Several of the queries in sysbench
      have a WHERE condition that the optimizer uses for executing these
      queries as range scans. The upper and lower limit of the range scan
      will ensure that the WHERE condition is fulfilled. Still, the WHERE
      condition is part of the queries' condition and if ICP is enabled the
      condition will be pushed down to InnoDB as an index condition. 
      
      Due to the range scan's upper and lower limits ensure that the WHERE
      condition is fulfilled, the pushed index condition will not filter out
      any records. As a result the use of ICP for these queries results in a
      performance overhead for sysbench. This overhead comes from using
      resources for determining the part of the condition that can be pushed
      down to InnoDB and overhead in InnoDB for executing the pushed index
      condition.
      
      With the default configuration for sysbench the range scans will use
      the primary key. This is a clustered index in InnoDB. Using ICP on a
      clustered index provides the lowest performance benefit since the
      entire record is part of the clustered index and in InnoDB it has the
      highest relative overhead for executing the pushed index condition.
      
      The fix for removing the overhead ICP introduces when running sysbench
      is to disable use of ICP when the index used by the query is a
      clustered index.
      
      When WL#6061 is implemented this change should be re-evaluated.
      541334c5
    • Sergey Petrunya's avatar
      Added comments · e98e05da
      Sergey Petrunya authored
      e98e05da
    • unknown's avatar
      607aab9c
  5. 14 Feb, 2012 5 commits
  6. 13 Feb, 2012 1 commit
    • unknown's avatar
      When we fail during slave thread initialisation, keep mi->run_lock · 27dfa45e
      unknown authored
      locked until we have finished clean up.
      
      Previously, the code released the lock without marking that the thread
      was running. This allowed a new slave thread to start while the old one
      was still in the middle of cleaning up, causing assertions and probably
      general mayhem.
      27dfa45e
  7. 12 Feb, 2012 2 commits
  8. 11 Feb, 2012 4 commits
  9. 10 Feb, 2012 5 commits
  10. 09 Feb, 2012 1 commit
  11. 03 Feb, 2012 9 commits
  12. 02 Feb, 2012 1 commit
  13. 01 Feb, 2012 2 commits