1. 27 Mar, 2013 2 commits
  2. 26 Mar, 2013 7 commits
  3. 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
  4. 22 Mar, 2013 1 commit
  5. 21 Mar, 2013 2 commits
  6. 20 Mar, 2013 3 commits
  7. 19 Mar, 2013 2 commits
    • Michael Widenius's avatar
      Speed up connection time: · 615d51b6
      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 automically 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:
      -Added thread_safe_decrement32() and thread_safe_increment32()
      -Removed sql_rnd_with_mutex() and get_thread_running()
      
      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
      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_ENTER
        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()
      sql/sql_class.cc:
        Removed thd_lock_thread_count() and thd_unlock_thread_count()
        Initialize random generator without locks
      sql/sql_insert.cc:
        Changed thread_count to be automically incremented
      sql/sql_parse.cc:
        Changed thread_count to be automically incremented
      vio/vio.c:
        Don't generate 'desc' with sprintf/strmov. Assign a pointer instead.
        (Good enough as this is just for debugging)
      615d51b6
    • Sergei Golubchik's avatar
      extend check_global_access() to avoid my_error when it's not needed · e73f13a7
      Sergei Golubchik authored
      (in INFORMATION_SCHEMA).
      e73f13a7
  8. 26 Mar, 2013 2 commits
  9. 25 Mar, 2013 1 commit
    • Michael Widenius's avatar
      Patch by Ian Good for MDEV-4319: mysqlbinlog output ambiguous escaping · c579bce3
      Michael Widenius authored
      The output of mysqlbinlog (with "-v --base64-output=DECODE-ROWS" flags) can not always be read or parsed correctly
      when string columns contain single-quotes or backslash characters.
      
      The fix for this bug is to escape single-quote and backslash characters on output, so that the result is both more
      readable and more easily parse-able.
      
      Note that this is just for comments, so it doesn't affect the replication.
      
      sql/log_event.cc:
        Escape \ and ' properly for mysqlbin user comments.
      c579bce3
  10. 19 Mar, 2013 2 commits
  11. 18 Mar, 2013 4 commits
    • unknown's avatar
      MDEV-4269 fix. · 2cd7cf8f
      unknown authored
      Item_default_value inherited form Item_field so should create temporary table field similary.
      2cd7cf8f
    • Alexey Botchkov's avatar
      MDEV-4252 geometry query crashes server. · 589247ae
      Alexey Botchkov authored
          Additional fixes for possible overflows in length-related
          calculations in 'spatial' implementations.
          Checks added to the ::get_data_size() methods.
          max_n_points decreased to occupy less 2G size. An
          object of that size is practically inoperable anyway.
      589247ae
    • Sergei Golubchik's avatar
      MDEV-4289 Assertion `0' fails in make_sortkey with GROUP_CONCAT, MAKE_SET, GROUP BY · a4a18e0c
      Sergei Golubchik authored
      Item_func_make_set wasn't taking into account the first argument when
      calculating maybe_null.
      
      sql/item_strfunc.cc:
        rewrite Item_func_make_set, removing separate storage of the first argument
      sql/item_strfunc.h:
        rewrite Item_func_make_set, removing separate storage of the first argument
      a4a18e0c
    • Sergei Golubchik's avatar
      MDEV-4283 Assertion `scale <= precision' fails in strings/decimal.c · 8f607aae
      Sergei Golubchik authored
        
      with decimals=NOT_FIXED_DEC it is possible to have 'decimals' larger
      than 'max_length', it's not an error for temporal functions.
        
      But when Item_func_numhybrid converts the value to DECIMAL_RESULT,
      it must limit 'decimals' to be a valid scale of a decimal number.
      8f607aae
  12. 17 Mar, 2013 5 commits
    • Sergei Golubchik's avatar
      MDEV-4286 Server crashes in Protocol_text::store, stack smashing detected · 3827d70a
      Sergei Golubchik authored
      AVG() returns a double, its max_length is reasonably
      limited by a double number length, even if the argument
      is many Kbytes long.
      3827d70a
    • Michael Widenius's avatar
      Patch by Hartmut Holzgraefe · 8b047ac5
      Michael Widenius authored
      STRAIGHT_JOIN couldn't be combined with NATURAL or USING(), 
      INNER JOIN not with NATURAL (MDEV-4271, MySQL Bug #35268)
      
      Separate rules existed for "natural" (non-outer) joins and
      for STRAIGHT_JOIN, with the only difference code wise being 
      that with STRAIGHT_JOIN the "straight" property of the right
      side table was set before calling the appropriate add_...()
      function.
      
      The "natural_join" parser rule has now been extended to also
      accept STRAIGHT_JOIN, and the rule result value is set to
      1 for straight joins, 0 otherwise, so acting as a "straight"
      flag that can directly be assigned to the "straight" property
      of the right side table.
      
      The rule parsing NATURAL JOIN was hard coded to accept just
      this keyword combination, without support for either 
      STRAIGHT_JOIN or the optional INNER.
      
      The "natural_join" rule has now been split up in an inner
      "inner_join" rule that matches the JOIN, INNER JOIN and
      STRAIGHT_JOIN cases while "natural_join" also matches
      CROSS JOIN. 
      
      The NATURAL rule has been changed to accept "inner_join"
      instead of just JOIN, so now NATURAL STRAIGHT_JOIN and
      NATURAL INNER JOIN also work as expected.
      
      As a side effect the removal of the duplciated rules
      for STRAIGHT_JOIN handling has reduced the shift/reduce
      conflict count by one.
      
      mysql-test/r/join.result:
        Added new test cases
      mysql-test/t/join.test:
        Added new test cases
      sql/sql_yacc.yy:
        The "natural_join" parser rule was extended to also accept STRAIGHT_JOIN
        NATURAL STRAIGHT_JOIN and NATURAL INNER JOIN also now work as expected
      8b047ac5
    • Michael Widenius's avatar
    • Sergei Golubchik's avatar
      MDEV-4284 Assertion `cmp_items[(uint)cmp_type]' fails in sql/item_cmpfunc.cc · 495fd27c
      Sergei Golubchik authored
      Flip the switch and create Item_cache based on the argument's cmp_type, not argument's result_type().
      Fix subselect_engine to calculate cmp_type correctly
      
      sql/item_subselect.h:
        mdev:4284
      495fd27c
    • Sergei Golubchik's avatar
      MDEV-4281 Assertion `maybe_null && item->null_value' fails in make_sortkey on... · 019f7425
      Sergei Golubchik authored
      MDEV-4281 Assertion `maybe_null && item->null_value' fails in make_sortkey on CASE with different return types, GROUP_CONCAT, GROUP BY
      
      Fix Item::get_date() to mark the item NULL when returning an error.
      019f7425
  13. 14 Mar, 2013 3 commits
  14. 13 Mar, 2013 1 commit
    • Sergei Golubchik's avatar
      MDEV-4265 5.5 is slower than 5.3 because of many str_to_datetime calls · 372bc22b
      Sergei Golubchik authored
      get_datetime_value() should not double-cache its own Item_cache_temporal items,
      but it *should* cache other Item_cache items, such as Item_cache_str.
      
      sql/item.h:
        shortcut, to avoid going through the switch in Item::cmp_type()
      sql/item_cmpfunc.cc:
        even if the item is Item_cache_str - it still needs to be converted and cached.
      sql/item_timefunc.h:
        all descendants of Item_temporal_func always have cmp_type==TIME_RESULT.
        Even Item_date_add_interval, that might have field_type == MYSQL_TYPE_STRING.
      372bc22b