1. 17 Feb, 2017 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-9028. · f49375fd
      Igor Babaev authored
      This patch is actually a complement for the fix of bug mdev-6892.
      The procedure create_tmp_table() now must take into account
      Item_direct_refs that wrap up constant fields of derived tables/views
      that are used as inner tables in outer join operations.
      f49375fd
  2. 16 Feb, 2017 3 commits
  3. 13 Feb, 2017 1 commit
  4. 27 Jan, 2017 2 commits
    • Monty's avatar
      60c932a3
    • Monty's avatar
      Fix for memory leak in applications, like QT,that calls · 5c9baf54
      Monty authored
      my_thread_global_init() + my_thrad_global_end() repeatadily.
      This caused THR_KEY_mysys to be allocated multiple times.
      
      Deletion of THR_KEY_mysys was originally in my_thread_global_end() but was
      moved to my_end() as DBUG uses THR_KEY_mysys and DBUG is released after
      my_thread_global_end() is called.
      
      Releasing DBUG before my_thread_global_end() and move THR_KEY_mysys back
      into my_thread_global_end() could be a solution, but as safe_mutex and other
      things called by my_thread_global_end is using DBUG it may not be completely
      safe.
      
      To solve this, I used the simple solution to add a marker that THR_KEY_mysys
      is created and not re-create it in my_thread_global_init if it already
      exists.
      5c9baf54
  5. 24 Jan, 2017 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-11859. · 46eef1ed
      Igor Babaev authored
      As the function Item_subselect::fix_fields does it the function
      Item_subselect::update_used_tables must ignore UNCACHEABLE_EXPLAIN
      when deciding whether the subquery item should be considered as a
      constant item.
      46eef1ed
  6. 18 Jan, 2017 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-8603. · f003cc8a
      Igor Babaev authored
      When building different range and index-merge trees the range optimizer
      could build an index-merge tree with an index scan containing less ranges
      then needed. This index-merge could be chosen as the best. Following this
      index-merge the executioner missed some rows in the result set.
      The invalid index scan was built due to an inconsistency in the code
      back-ported from mysql into 5.3 that fixed mysql bug #11765831:
      the code added to key_or() could change shared keys of the second
      ored tree. Partially the problem was fixed in the patch for mariadb
      bug #823301, but it turned out that only partially.
      f003cc8a
  7. 14 Jan, 2017 3 commits
    • Sergei Golubchik's avatar
      bugfix: Item_func_min_max stored thd internally · b948b5f7
      Sergei Golubchik authored
      It was used for get_datetime_value() and for thd->is_error().
      
      But in fact, get_datetime_value() never used thd argument, because the
      cache ptr argument was NULL. And thd->is_error() check was not needed
      at that place at all.
      b948b5f7
    • Sergei Golubchik's avatar
      bugfix: cmp_item_row::alloc_comparators() allocated on the wrong arena · 798fcb54
      Sergei Golubchik authored
      it used current_thd->alloc() and allocated on the thd's execution arena,
      not on table->expr_arena.
      
      Remove THD::arena_for_cached_items that is temporarily set in
      update_virtual_fields(), and replaces THD arena in get_datetime_value().
      Instead set THD arena to table->expr_arena for the whole  duration
      of update_virtual_fields()
      798fcb54
    • Sergei Golubchik's avatar
      MDEV-9690 concurrent queries with virtual columns crash in temporal code · 67e20281
      Sergei Golubchik authored
      Item_func_le included Arg_comparator. Arg_comparator remembered
      the current_thd during fix_fields and used that value during
      execution to allocate Item_cache in get_datetime_value().
      But for vcols fix_fields and val_int can happen in different threads.
      
      Same bug for Item_func_in using in_datetime or cmp_item_datetime,
      both also remembered current_thd at fix_fields() to use it later
      for get_datetime_value().
      
      As a fix, these objects no longer remember the current_thd,
      and get_datetime_value() uses current_thd at run time. This
      should not increase the number of current_thd calls much, as
      Item_cache is created only once anyway.
      67e20281
  8. 12 Jan, 2017 1 commit
  9. 11 Jan, 2017 3 commits
  10. 10 Jan, 2017 1 commit
  11. 09 Jan, 2017 1 commit
  12. 05 Jan, 2017 4 commits
    • Igor Babaev's avatar
      Fixed bug mdev-10705. · ae1b3d19
      Igor Babaev authored
      The fix for bug mdev-5104 did not take into account that
      for any call of setup_order the size of ref_array must
      be big enough. This patch fixes this problem.
      ae1b3d19
    • Elena Stepanova's avatar
      MDEV-11727 Sequences of tests fail with valgrind warnings in buildbot · 9e528d4f
      Elena Stepanova authored
      The warning is "blocks are still reachable in loss record",
      happens in malloc / _dl_close_worker. Suppression added
      9e528d4f
    • Elena Stepanova's avatar
      MDEV-11700 funcs_2.innodb_charset fails in buldbot on valgrind builder with timeout · 5302ef2c
      Elena Stepanova authored
      When the test is run as a part of the suite with valgrind,
      only allow it to be executed if --big-test is set.
      If the test is run by specifying its name explicitly, it
      will still be executed, even with valgrind without big-test,
      MTR has special logic for that
      5302ef2c
    • Elena Stepanova's avatar
      MDEV-11722 main.join_cache fails in buildbot on very slow builders · f1ee011a
      Elena Stepanova authored
      The guilty part of the test checks for performance degradation on
      a query with numerous joins on an empty table. The test expects
      the query to take less than 1 second, and fails if it is not so
      (which can happen on very slow builders).
      
      The solution is to add more JOINs to the query. On a fixed server,
      it should not have any noticeable impact on the query execution,
      while on the unfixed version the query would take several times
      longer (e.g. 6.5 sec vs 1.5 sec). Thus, we can increase the margin
      for the error, and make the test fail when the query takes longer
      than 5 seconds.
      f1ee011a
  13. 04 Jan, 2017 3 commits
    • Sergei Golubchik's avatar
      MDEV-11676 Starting service with mysqld_safe_helper fails in SELINUX "enforcing" mode · f4d12c1d
      Sergei Golubchik authored
      correct the error message in case of setuid/setgid failures
      f4d12c1d
    • Elena Stepanova's avatar
      MDEV-10100 main.pool_of_threads fails sporadically in buildbot · e5d7fc96
      Elena Stepanova authored
      Backport the fix to 5.5, because it fails there too
      
      The patch fixes two test failures:
      - on slow builders, sometimes a connection attempt which should
        fail due to the exceeded number of thread_pool_max_threads
        actually succeeds;
      - on even slow builders, MTR sometimes cannot establish the
        initial connection, and check-testcase fails prior to the
        test start
      
      The problem with check-testcase was caused by connect-timeout=2
      which was set for all clients in the test config file. On slow
      builders it might be not enough.
      There is no way to override it for the pre-test check, so it needed
      to be substantially increased or removed.
      
      The other problem was caused by a race condition between sleeps
      that the test performs in existing connections and the connect
      timeout for the connection attempt which was expected to fail.
      If sleeps finished before the connect-timeout was exceeded, it
      would allow the connection to succeed.
      
      To solve each problem without making the other one worse,
      connect-timeout should be configured dynamically during the test.
      Due to the nature of the test (all connections must be busy
      at the moment when we need to change the timeout, and cannot execute
      SET GLOBAL ...), it needs to be done independently from the server.
      
      The solution:
      - recognize 'connect_timeout' as a connection option in mysqltest's
        "connect" command;
      - remove connect-timeout from the test configuration file;
      - use the new connect_timeout option for those connections which
        are expected to fail;
      - re-arrange the test flow to allow running a huge SLEEP
        without affecting the test execution time (because it would be
        interrupted after the main test flow is finished).
      
      The test is still subject to false negatives, e.g. if the connection
      fails due to timeout rather than due to the exceeded number of
      allowed threads, or if the connection on extra port succeeds due
      to a race condition and not because the special logic for the extra
      port. But those false negatives have always been possible there
      on slow builders, they should not be critical because faster builders
      should catch such failures if they appear.
      
      Conflicts:
      	client/mysqltest.cc
      	mysql-test/r/pool_of_threads.result
      	mysql-test/t/pool_of_threads.test
      e5d7fc96
    • Elena Stepanova's avatar
      MDEV-11719 main.subselect_no_exists_to_in failed in buildbot · 0912fbbc
      Elena Stepanova authored
      main.log_slow might leave mysql.slow_log table non-empty,
      and tests which later use it might fail. Make sure that the table
      is properly truncated
      0912fbbc
  14. 24 Dec, 2016 1 commit
  15. 22 Dec, 2016 7 commits
  16. 21 Dec, 2016 1 commit
    • Alexander Barkov's avatar
      MDEV-10386 Assertion `fixed == 1' failed in virtual String*... · 5e051bfa
      Alexander Barkov authored
      MDEV-10386 Assertion `fixed == 1' failed in virtual String* Item_func_conv_charset::val_str(String*)
      
      The patch b96c196f added a new call for
      safe_charset_converter() without a corresponding fix_fields().
      In case of a sub-query the created Item remained in non-fixed state.
      The problem did not show up with literal derived expressions, only
      subselects were affected. This patch adds a corresponding fix_fields()
      to the previously added safe_charset_converter().
      5e051bfa
  17. 20 Dec, 2016 4 commits
  18. 19 Dec, 2016 2 commits
    • Sergei Petrunia's avatar
      MDEV-10148: Database crashes in the query to the View · f23b41b9
      Sergei Petrunia authored
      Fix st_select_lex::is_merged_child_of to work across merged views or
      derived tables.
      f23b41b9
    • Sergei Petrunia's avatar
      MDEV-7691: Assertion `outer_context || !*from_field || *from_field == not_found_field' ... · 268bb69b
      Sergei Petrunia authored
      The bug occurred when a subquery
      - has a reference to outside, to grand-parent query or further up
      - is converted to a semi-join (i.e. merged into its parent).
      
      Then the reference to outside had form Item_ref(Item_field(...)).
      - Conversion to semi-join would call item->fix_after_pullout() for the
        outside reference.
      - Item_ref::fix_after_pullout would call Item_field->fix_after_pullout
      - The Item_field would construct a new Name_resolution_context object
        This process ignored the fact that the Item_field does not belong to
        any of the subselects being flattened.
      The result was crash in the next call to Item_field::fix_fields(), where
      we would try to use an invalid Name_resolution_context object.
      
      Fixed by not creating Name_resolution_context object if the Item_field's
      context does not belong to the subselect(s) that were flattened.
      268bb69b