1. 25 Mar, 2013 1 commit
    • 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
  2. 17 Mar, 2013 2 commits
    • 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
  3. 12 Mar, 2013 1 commit
  4. 07 Mar, 2013 1 commit
    • Sergey Petrunya's avatar
      Fix buildbot failure: · 62222eb5
      Sergey Petrunya authored
      Backport the code that runs cassandra.test only when Cassandra is 
      present and running from 10.0 to 10.0-base.
      62222eb5
  5. 27 Feb, 2013 1 commit
  6. 25 Feb, 2013 1 commit
  7. 15 Feb, 2013 1 commit
    • Michael Widenius's avatar
      Fixed BUG#51763 Can't delete rows from MEMORY table with HASH key · 7042dd38
      Michael Widenius authored
      mysql-test/suite/heap/heap.result:
        Added test case
      mysql-test/suite/heap/heap.test:
        Added test case
      storage/heap/hp_delete.c:
        Fixed that we don't change order of keys for the current key when we delete them from the hash table.
        Fixed that 'current_hash_ptr' is correct after heap_delete_key().
        Don't "reset current_hash_ptr" on delete; This will improve time a lot for delete of rows when not all rows matches the search criteria.
      7042dd38
  8. 07 Feb, 2013 2 commits
    • Elena Stepanova's avatar
      Fix for MDEV-4149, backport from 10.0: · a555ceb2
      Elena Stepanova authored
        committer: Sergei Golubchik <sergii@pisem.net> 
          fix for a valgrind builds. 
          my_alloca() cannot have MY_THREAD_SPECIFIC, because can be used 
          outside of the THD context. 
      a555ceb2
    • unknown's avatar
      MDEV-537 Make multi-column non-top level subqueries to be executed via index... · e648ff11
      unknown authored
      MDEV-537 Make multi-column non-top level subqueries to be executed via index (index/unique subquery)
                 instead of single_select_engine
      
      This task changes the IN-EXISTS rewrite for multi-column subqueries
      "(a, b) IN (select b, c ...)" to work in the same way as for
      single-column subqueries "a IN (select b ...) with respect to the
      injection of NULL-rejecting predicates.
       
      More specifically, the method
      Item_in_subselect::create_row_in_to_exists_cond()
      adds Item_is_not_null_test and Item_func_trig_cond only if the left
      IN operand can be NULL. Not having these predicates when not necessary,
      makes it possible to rewrite the subquery into a "unique_subquery" or
      "index_subquery" when there is a suitable index on the only
      subquery table.
      e648ff11
  9. 05 Feb, 2013 1 commit
  10. 04 Feb, 2013 3 commits
  11. 31 Jan, 2013 1 commit
  12. 30 Jan, 2013 2 commits
  13. 29 Jan, 2013 5 commits
  14. 28 Jan, 2013 7 commits
  15. 26 Jan, 2013 2 commits
  16. 25 Jan, 2013 9 commits
    • Michael Widenius's avatar
      Automatic merge · 772bd60a
      Michael Widenius authored
      772bd60a
    • Vladislav Vaintroub's avatar
      fix embedded · 8199838a
      Vladislav Vaintroub authored
      8199838a
    • Michael Widenius's avatar
      Fixed MDEV-3890: Server crash inserting record on a temporary table after truncating it · ea1d5943
      Michael Widenius authored
      The problem was that a temporary table was re-created as a non-temporary table.
      
      
      mysql-test/suite/maria/truncate.result:
        Added test cases
      mysql-test/suite/maria/truncate.test:
        Added test cases
      sql/sql_truncate.cc:
        Mark that table to be created is a temporary table
      storage/maria/ha_maria.cc:
        Ensure that temporary tables are not transactional.
      ea1d5943
    • Vladislav Vaintroub's avatar
      Fix embedded build · db26ab8a
      Vladislav Vaintroub authored
      db26ab8a
    • Vladislav Vaintroub's avatar
      MDEV-3842, MDEV-3923 : · 76400fcc
      Vladislav Vaintroub authored
      Miscellaneous workarounds for  drop-in compatibility problems with Linux distributions, arounf versioning of the 
      MySQL 5.5 client shared library. There seems to be 3 different ways major distributions handle versioning
      
      1. Fedora  (also Mageia, and likely  other Redhat descendants) way 
         old, 5.1 API functions are given version libmysqlclient_16
         new API functions  (client plugins, mysql_stmt_next ) are given version libmysqlclient_18
         some extra functions beyond API are exported.
         some functions are renamed.
      
      2.Debian Wheezy way 
        all functions are given libmysqlclient_18 version
      
      3. Ubuntu  way (or MySQL/MariaDB download packages)
        no versioning
      
      UIp to this fix, MariaDB distributions did not have any versioning in the libraries, this rendered client library incompatible to distributions 
      thus exchanging  distribution's libmysqlclient.so.18.0.0  with MariaDB's did not work nicely (anywhere but on Ubuntu)
      
      
      THE FIX  
      is to build libraries the same way as distributions do it 
      - when building RPMs, use  same version script as Fedora does, Make sure to export extra-symbols, the same as Fedora exports.
      - when building DEBs, use the same version script as Debian Wheezy
      - do not use version scripts otherwise
      
      
      Also, makes sure that extensions of  MySQL APIs (asynchronous client functionality) is exported by  the shared libraries.
      76400fcc
    • Sergei Golubchik's avatar
      5.1 merge · e400450f
      Sergei Golubchik authored
      e400450f
    • Vladislav Vaintroub's avatar
      MDEV-3971 : problems installing MariaDB packages (conflicts with mysql-libs-5.5) · 88649405
      Vladislav Vaintroub authored
      FIx  : make "shared" RPM obsolete/provide mysql-libs
      88649405
    • unknown's avatar
      The problem was that expression with field after transformation (on the first execution) · 298008dc
      unknown authored
      reached by fix_fields() (via reference) before row which it belongs to (on the second execution)
      and fix_field for row did not follow usual protocol for Items with argument
      (first check that the item fixed then call fix_fields).
      
      Item_row::fix_field fixed.
      298008dc
    • Sergei Golubchik's avatar
      MDEV-729 lp:998028 - Server crashes on normal shutdown in closefrm after... · 7f208d3c
      Sergei Golubchik authored
      MDEV-729 lp:998028 - Server crashes on normal shutdown in closefrm after executing a query from MyISAM table
      
      don't write a key value into the record buffer - a key length can be larger then the record length.
      7f208d3c