1. 07 Apr, 2013 14 commits
  2. 02 Apr, 2013 1 commit
    • Sergey Petrunya's avatar
      Fix buildbot failure in show_explain.test: · ef5241ae
      Sergey Petrunya authored
      mysqltest: At line 477: query 'show explain for $thr2' failed: 1933: Target is not running an EXPLAINable command
      
      After the fix for MDEV-4144, subquery with WHERE pk= (select ...) became a degenerate, constant 
      SELECT.  It is not executed in normal way anymore, so it is not possible to catch it in-execution.
      ef5241ae
  3. 31 Mar, 2013 1 commit
  4. 29 Mar, 2013 3 commits
    • unknown's avatar
      Fix for MDEV-4144 · 599a1384
      unknown authored
        
      Analysis:
      The reason for the inefficent plan was that Item_subselect::is_expensive()
      didn't detect the special case when a subquery was optimized, but had no
      join plan because it either has no table, or its tables have been optimized
      away, or the optimizer detected that the result set is empty.
        
      Solution:
      Identify the special cases above in the Item_subselect::is_expensive(),
      and consider such degenerate subqueries inexpensive.
      599a1384
    • Vladislav Vaintroub's avatar
      fa01b76b
    • Igor Babaev's avatar
      Merge 5.3->5.5. · e91e8c8c
      Igor Babaev authored
      e91e8c8c
  5. 28 Mar, 2013 2 commits
    • Igor Babaev's avatar
      Merge · a2c3d7d3
      Igor Babaev authored
      a2c3d7d3
    • Igor Babaev's avatar
      Fixed bug mdev-4311 (bug #68749). · 323fdd7a
      Igor Babaev authored
      This bug was introduced by the patch for WL#3220.
      If the memory allocated for the tree to store unique elements
      to be counted is not big enough to include all of them then
      an external file is used to store the elements.
      The unique elements are guaranteed not to be nulls. So, when 
      reading them from the file we don't have to care about the null
      flags of the read values. However, we should remove the flag 
      at the very beginning of the process. If we don't do it and
      if the last value written into the record buffer for the field
      whose distinct values needs to be counted happens to be null,
      then all values read from the file  are considered to be nulls
      and are not counted in.
      The fix does not remove a possible null flag for the read values.
      Rather it just counts the values in the same way it was done
      before WL #3220.
      323fdd7a
  6. 27 Mar, 2013 3 commits
  7. 26 Mar, 2013 7 commits
  8. 25 Mar, 2013 5 commits
    • Sergei Golubchik's avatar
      fixes for windows · 03d08bed
      Sergei Golubchik authored
      03d08bed
    • Michael Widenius's avatar
      Automatic merge · 6b3654f9
      Michael Widenius authored
      6b3654f9
    • Michael Widenius's avatar
      Automatic merge · 2c40fb56
      Michael Widenius authored
      2c40fb56
    • unknown's avatar
      MDEV-4322: Race in binlog checkpointing during server shutdown. · 22f91edd
      unknown authored
      During server shutdown, we need to wait for binlog checkpointing to
      finish in the binlog background thread before closing the binlog.
      
      This was not done, so we could get assert and failure to finish the
      final binlog checkpoint if shutdown happened in the middle.
      22f91edd
    • Michael Widenius's avatar
      Speed up connection time: · d8986fd6
      Michael Widenius authored
      -Change my_rnd() slightly to make it safer if two threads use it at the same time.
      -Avoid some sprintf and strmov in vio.
      -Changed thread_count to be automaticly incremented (instead of under LOCK_thread_count).
      -Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count.
      -Moved delete thd out from LOCK_thread_count.
      -Save some mysql_cond_broadcast(&COND_thread_count) calls.
      -Removed call to getsockname() during connect.
      -Initialize random generator without locks.
      
      Other things:
      -Fixed test cases that depends on changes for LOCK_grant
      -Added thread_safe_decrement32() and thread_safe_increment32()
      -Removed sql_rnd_with_mutex() and get_thread_running()
      -In check_table_access() don't lock LOCK_grant if we can resolve the grant with user or db level grants (the normal case).
      -Don't use a lock for setting THD->query_id.
      -Fixed bug where thd->set_query_id() could be set to same value by multiple threads.
      
      Thanks to Yoshinori Matsunobu for the benchmark of connection speed and to
      Domas Mituzas for the inspiration for many of the fixes.
      
      
      include/violite.h:
        Change desc to a string pointer
      mysql-test/suite/perfschema/r/all_instances.result:
        Added new mutex
      mysql-test/suite/perfschema/t/func_mutex.test:
        Test for LOCK_system_variables_hash instead of LOCK_grant, as LOCK_grant is not anymore always taken for SELECT's.
      mysys/my_gethwaddr.c:
        More DBUG
      mysys/my_rnd.c:
        Change my_rnd() slightly to make it safer if two threads use it at the same time.
      sql/event_scheduler.cc:
        Changed thread_count to be automically incremented
        Moved some safe things out from LOCK_thread_count.
        Simplify deleting of THD for running thread.
      sql/mysqld.cc:
        Changed thread_count to be automically incremented
        Thread cache now uses LOCK_thread_cache instead of LOCK_thread_count
        Added delete_running_thd()
        Moved delete thd out from LOCK_thread_count
        More DBUG
        Only call  mysql_cond_broadcast(&COND_thread_count) if thread_count is 0
        Removed call to getsockname() (old not anymore needed check)
      sql/mysqld.h:
        Removed sql_rnd_with_mutex() (not needed anymore)
        Removed not used function get_thread_running()
        Added thread_safe_decrement32() and thread_safe_increment32()
        Simplified dec_thread_running() and inc_thread_running()
        next_query_id() should return the original value for global_query_id, not the next one.
        (Bug introduced with MySQL 5.5 merge).
      sql/sql_acl.cc:
        In check_table_access() don't lock LOCK_grant if we can resolve the grant with user or db level grants (the normal case).
      sql/sql_class.cc:
        Removed thd_lock_thread_count() and thd_unlock_thread_count()
        Initialize random generator without locks
        Don't use a lock for setting THD->query_id.
        (This is only accessed by thread owning the THD)
      sql/sql_class.h:
        Don't use a lock for setting THD->query_id.
      sql/sql_insert.cc:
        Changed thread_count to be automically incremented
      sql/sql_parse.cc:
        Changed thread_count to be automically incremented
        Fixed bug where thd->set_query_id() could be set to same value by multiple threads.
      vio/vio.c:
        Don't generate 'desc' with sprintf/strmov. Assign a pointer instead.
        (Good enough as this is just for debugging)
      d8986fd6
  9. 23 Mar, 2013 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-4318. · 21dad7ec
      Igor Babaev authored
      In some cases, when using views the optimizer incorrectly determined
      possible join orders for queries with nested outer and inner joins.
      This could lead to invalid execution plans for such queries.
      21dad7ec
  10. 22 Mar, 2013 1 commit
  11. 21 Mar, 2013 2 commits