1. 01 Jun, 2012 1 commit
  2. 24 May, 2012 1 commit
  3. 23 May, 2012 3 commits
  4. 22 May, 2012 1 commit
    • unknown's avatar
      Fix bug lp:1002079 · acdcb6a5
      unknown authored
        
        Analysis:
        The optimizer detects an empty result through constant table optimization.
        Then it calls return_zero_rows(), which in turns calls inderctly
        Item_maxmin_subselect::no_rows_in_result(). The latter method set "value=0",
        however "value" is pointer to Item_cache, and not just an integer value.
        
        All of the Item_[maxmin | singlerow]_subselect::val_XXX methods does:
          if (forced_const)
            return value->val_real();
        which of course crashes when value is a NULL pointer.
        
        Solution:
        When the optimizer discovers an empty result set, set
        Item_singlerow_subselect::value to a FALSE constant Item instead of NULL.
      acdcb6a5
  5. 21 May, 2012 1 commit
    • Alexey Botchkov's avatar
      MDEV-136 Non-blocking "set read_only". · fb25c89e
      Alexey Botchkov authored
          Handle the 'set read_only=1' in lighter way, than the FLUSH TABLES READ LOCK;
          For the transactional engines we don't wait for operations on that tables to finish.
      
      per-file comments:
       mysql-test/r/read_only_innodb.result
      MDEV-136 Non-blocking "set read_only".
             test result updated.
       mysql-test/t/read_only_innodb.test
      MDEV-136 Non-blocking "set read_only".
             test case added.
        sql/mysql_priv.h
      MDEV-136 Non-blocking "set read_only".
              The close_cached_tables_set_readonly() declared.
        sql/set_var.cc
      MDEV-136 Non-blocking "set read_only".
               Call close_cached_tables_set_readonly() for the read_only::set_var.
         sql/sql_base.cc
       MDEV-136 Non-blocking "set read_only".
               Parameters added to the close_cached_tables implementation,
               close_cached_tables_set_readonly declared.
               Prevent blocking on the transactional tables if the
               set_readonly_mode is on.
      fb25c89e
  6. 20 May, 2012 1 commit
  7. 18 May, 2012 4 commits
  8. 17 May, 2012 3 commits
  9. 15 May, 2012 1 commit
    • unknown's avatar
      Fix for LP bug#998516 · 17e199af
      unknown authored
      If we did nothing in resolving unique table conflict we should not retry (it leed to infinite loop).
      Now we retry (recheck) unique table check only in case if we materialized a table.
      17e199af
  10. 13 May, 2012 1 commit
    • Sergey Petrunya's avatar
      BUG#998236: Assertion failure or valgrind errors at best_access_path ... · 05a0d97e
      Sergey Petrunya authored
      - Let fix_semijoin_strategies_for_picked_join_order() set 
        POSITION::prefix_record_count for POSITION records that it copies from
        SJ_MATERIALIZATION_INFO::tables. 
        (These records do not have prefix_record_count set, because they are optimized
         as joins-inside-semijoin-nests, without full advance_sj_state() processing).  
       
      05a0d97e
  11. 12 May, 2012 3 commits
  12. 11 May, 2012 2 commits
    • unknown's avatar
      Merge 5.2->5.3 · c27552a4
      unknown authored
      c27552a4
    • unknown's avatar
      fix for LP bug#994392 · c9e3bf74
      unknown authored
      The not_null_tables() of Item_func_not_all and Item_in_optimizer was inherited from
      Item_func by mistake. It made the optimizer think that  subquery
      predicates with ALL/ANY/IN were null-rejecting. This could trigger invalid
      conversions of outer joins into inner joins.
      c9e3bf74
  13. 10 May, 2012 1 commit
  14. 08 May, 2012 3 commits
    • unknown's avatar
      Fix compiler warnings. · 25ffc6cc
      unknown authored
      25ffc6cc
    • unknown's avatar
      Addition to the fix to LP bug#994275. · 3ab43b6c
      unknown authored
      It is problem of constant propagated to ref* access method (the problem was hiden by using debug binaries for testing).
      3ab43b6c
    • Vladislav Vaintroub's avatar
      MDEV-262 : log_state occationally fails in buildbot. · c81b9fae
      Vladislav Vaintroub authored
      The failures are  missing entries in the slow query log.  The reason for the failure  are sleep() calls  with short duration 10ms, which is less than the default system timer resolution for various WaitForXXXObject functions  (15.6 ms) and thus can't work reliably.
      The fix is to make sleeps tiny bit longer (20ms from 10ms) in the test.
      c81b9fae
  15. 07 May, 2012 4 commits
    • Vladislav Vaintroub's avatar
      MDEV-261 : mysqtest crashes when assigning variable to result of select , like · c1b9396e
      Vladislav Vaintroub authored
      let x = `SELECT <something>`
      
      The fix is to detect the condition "no active connection",  to report error and die.
      Note, that the check for no active connection was already in place for ordinary commands, 
      and was missing only for assign-variable command.
      c1b9396e
    • unknown's avatar
      LP bug#994275 fix. · 1452c89c
      unknown authored
      In 5.3 we substitute constants in ref access values it can't be null so we do not need add NOT NULL for early NULL filtering.
      1452c89c
    • unknown's avatar
      Fix for LP bug#993726 · ccc13702
      unknown authored
      Optimization of aggregate functions detected constant under max() and evalueted it, but condition in the WHWRE clause (which is always FALSE) was not taken into account
      ccc13702
    • unknown's avatar
      Fix for bug lp:992405 · e09fb52d
      unknown authored
      The patch backports two patches from mysql 5.6:
      - BUG#12640437: USING SQL_BUFFER_RESULT RESULTS IN A DIFFERENT QUERY OUTPUT
      - Bug#12578908: SELECT SQL_BUFFER_RESULT OUTPUTS TOO MANY ROWS WHEN GROUP IS OPTIMIZED AWAY
      
      Original comment:
      -----------------
      3714 Jorgen Loland	2012-03-01
            BUG#12640437 - USING SQL_BUFFER_RESULT RESULTS IN A DIFFERENT 
                           QUERY OUTPUT
            
            For all but simple grouped queries, temporary tables are used to
            resolve grouping. In these cases, the list of grouping fields is
            stored in the temporary table and grouping is resolved
            there (e.g. by adding a unique constraint on the involved
            fields). Because of this, grouping is already done when the rows
            are read from the temporary table.
            
            In the case where a group clause may be optimized away, grouping
            does not have to be resolved using a temporary table. However, if
            a temporary table is explicitly requested (e.g. because the
            SQL_BUFFER_RESULT hint is used, or the statement is
            INSERT...SELECT), a temporary table is used anyway. In this case,
            the temporary table is created with an empty group list (because
            the group clause was optimized away) and it will therefore not
            create groups. Since the temporary table does not take care of
            grouping, JOIN::group shall not be set to false in 
            make_simple_join(). This was fixed in bug 12578908. 
            
            However, there is an exception where make_simple_join() should
            set JOIN::group to false even if the query uses a temporary table
            that was explicitly requested but is not strictly needed. That
            exception is if the loose index scan access method (explain
            says "Using index for group-by") is used to read into the 
            temporary table. With loose index scan, grouping is resolved 
            by the access method. This is exactly what happens in this bug.
      e09fb52d
  16. 03 May, 2012 1 commit
    • unknown's avatar
      Fix bug lp:993745 · a61456e7
      unknown authored
      This is a backport of the fix for MySQL bug #13723054 in 5.6.
      
      Original comment:
            The crash is caused by arbitrary memory area owerwriting in case of
            BLOB fields during attempt to copy BLOB field key image into record
            buffer(record buffer is too small to get BLOB key part image).
            note:
            QUICK_GROUP_MIN_MAX_SELECT can not work with BLOB fields
            because it uses record buffer as temporary buffer for key values
            however this case is filtered out by covering_keys() check
            in get_best_group_min_max() as BLOBs always require key length
            modificator in the key declaration and if the key has a BLOB
            then it can not be covered key.
            The fix is to use 'max_used_key_length' key length instead of 0.
      
      Analysis:
      Spcifically the crash in this bug was a result of the call to key_copy()
      that copied the whole key, inlcuding the BLOB field which is not used
      for index access. Copying the blob field overwrote memory as far as the
      function parameter 'key_info'. As a result the contents of key_info was
      all 0, which resulted in a crash when this key_info was accessed few
      lines below in key_cmp().
      a61456e7
  17. 02 May, 2012 1 commit
  18. 03 May, 2012 1 commit
  19. 02 May, 2012 7 commits