1. 27 Feb, 2017 11 commits
    • Sergei Golubchik's avatar
      compilation failure · f2d24ea6
      Sergei Golubchik authored
      At least it would be a compilation failure with -DDONT_ALLOW_SHOW_COMMANDS.
      Otherwise it only confuses ctags to ignore ~75% of sql_parse.cc
      f2d24ea6
    • Sergei Golubchik's avatar
      cleanup: remove now-unused argument · b6862c91
      Sergei Golubchik authored
      b6862c91
    • Sergei Golubchik's avatar
      MDEV-11902 mi_open race condition · b27fd90a
      Sergei Golubchik authored
      TOCTOU bug. The path is checked to be valid, symlinks are resolved.
      Then the resolved path is opened. Between the check and the open,
      there's a window when one can replace some path component with a
      symlink, bypassing validity checks.
      
      Fix: after we resolved all symlinks in the path, don't allow open()
      to resolve symlinks, there should be none.
      
      Compared to the old MyISAM/Aria code:
      * fastpath. Opening of not-symlinked files is just one open(),
        no fn_format() and lstat() anymore.
      * opening of symlinked tables doesn't do fn_format() and lstat() either.
        it also doesn't to realpath() (which was lstat-ing every path
        component), instead if opens every path component with O_PATH.
      * share->data_file_name stores realpath(path) not readlink(path). So,
        SHOW CREATE TABLE needs to do lstat/readlink() now (see ::info()),
        and certain error messages (cannot open file "XXX") show the real
        file path with all symlinks resolved.
      b27fd90a
    • Sergei Golubchik's avatar
      cleanup: NO_OPEN_3 was never defined · d78d0d45
      Sergei Golubchik authored
      d78d0d45
    • Sergei Golubchik's avatar
      cleanup: remove 16-year-old "TODO" · 8722d4b8
      Sergei Golubchik authored
      8722d4b8
    • Sergei Golubchik's avatar
      cleanup: mysys_test_invalid_symlink · c826ac9d
      Sergei Golubchik authored
      Remove maria_test_invalid_symlink() and myisam_test_invalid_symlink(),
      introduce mysys_test_invalid_symlink(). Other engines might need it too
      c826ac9d
    • Sergei Golubchik's avatar
      cleanup: my_register_filename() · 24d8bc70
      Sergei Golubchik authored
      Don't let my_register_filename() fail because strdup() failed. Better to
      have NULL for a filename, then to fail the already successful open().
      
      Filenames are only used for error reporting and there was already code
      to ignore OOMs (my_fdopen()) and to cope with missing filenames
      (my_filename()).
      24d8bc70
    • Sergei Golubchik's avatar
      cleanup: fn_format, remove dead code · 3cba74e0
      Sergei Golubchik authored
      my_realpath() ignores MY_xxx flags anyway
      3cba74e0
    • Sergei Golubchik's avatar
      bugfix: DEBUG_SYNC() invoked with no THD · 924a81a5
      Sergei Golubchik authored
      While DEBUG_SYNC doesn't make sense without a valid THD, it might
      be put in the code that's invoked both within and outside of a
      THD context (e.g. in maria_open(), there is no THD during recovery).
      924a81a5
    • Sergei Golubchik's avatar
      MDEV-11525 Assertion `cp + len <= buff + buff_size' failed in JOIN_CACHE::write_record_data · 8897b50d
      Sergei Golubchik authored
      Workaround for join_cache + index on vcols + keyread bug.
      Initialize the record to avoid caching garbage in non-read fields.
      
      A proper fix (do not cache non-read fields at all) is done in 10.2
      in commits 5d7607f3..8d99166c
      8897b50d
    • Sergei Golubchik's avatar
      MDEV-11933 Wrong usage of linked list in mysql_prune_stmt_list · eef21014
      Sergei Golubchik authored
      mysql_prune_stmt_list() was walking the list following
      element->next pointers, but inside the loop it was invoking
      list_add(element) that modified element->next. So, mysql_prune_stmt_list()
      failed to visit and reset all elements, and some of them were left
      with pointers to invalid MYSQL.
      eef21014
  2. 24 Feb, 2017 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-7992. · ac78927a
      Igor Babaev authored
      'Not exists' optimization can be used for nested outer joins
      only if IS NULL predicate from the WHERE condition is activated.
      So we have to check that all guards that wrap this predicate
      are in the 'open' state.
      This patch supports usage of 'Not exists' optimization for any
      outer join, no matter how it's nested in other outer joins.
      
      This patch is also considered as a proper fix for bugs
      #49322/#58490 and LP #817360.
      ac78927a
  3. 23 Feb, 2017 1 commit
  4. 22 Feb, 2017 3 commits
    • Marko Mäkelä's avatar
      MDEV-11520/MDEV-5746 post-fix: Do not posix_fallocate() too much. · 365c4e97
      Marko Mäkelä authored
      Before the MDEV-11520 fixes, fil_extend_space_to_desired_size()
      in MariaDB Server 5.5 incorrectly passed the desired file size as the
      third argument to posix_fallocate(), even though the length of the
      extension should have been passed. This looks like a regression
      that was introduced in the 5.5 version of MDEV-5746.
      365c4e97
    • Marko Mäkelä's avatar
      MDEV-11520 post-fixes · 6de50b2c
      Marko Mäkelä authored
      Remove the unused variable desired_size.
      
      Also, correct the expression for the posix_fallocate() start_offset,
      and actually test that it works with a multi-file system tablespace.
      Before MDEV-11520, the expression was wrong in both innodb_plugin and
      xtradb, in different ways.
      
      The start_offset formula was tested with the following:
      
      ./mtr --big-test --mysqld=--innodb-use-fallocate \
      --mysqld=--innodb-data-file-path='ibdata1:5M;ibdata2:5M:autoextend' \
      --parallel=auto --force --retry=0 --suite=innodb &
      
      ls -lsh mysql-test/var/*/mysqld.1/data/ibdata2
      6de50b2c
    • Sachin Setiya's avatar
      MDEV-11718 5.5 rpl and federated tests massively fail in buildbot with valgrind · 32591b75
      Sachin Setiya authored
      Problem:- When MariaDB is compiled with jemalloc support, And we run mtr valgrind
      test, valgrind interferes with libjemalloc and returns false errors.
      
      Solution:- Run valgrind with --soname-synonyms=somalloc=libjemalloc* or
      --soname-synonyms=somalloc=NONE depending on whether we are dynamically
      linking or statically linking.
      Signed-off-by: default avatarSachin Setiya <sachin.setiya@mariadb.com>
      32591b75
  5. 21 Feb, 2017 3 commits
  6. 20 Feb, 2017 2 commits
  7. 18 Feb, 2017 1 commit
    • Elena Stepanova's avatar
      MDEV-10621 parts.partition_float_myisam failed with timeout in buildbot · 6364adb1
      Elena Stepanova authored
      parts.partition_float_myisam, parts.partition_int_myisam,
      parts.partition_float_innodb are all known to fail with timeouts
      on slow builders. The tests are composed of several independent parts
      for corresponding subtypes (float == float + double,
      int == tinyint + smallint + mediumint + int + bigint). The solution
      is to split them into separate tests. No test logic has been changed.
      6364adb1
  8. 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
  9. 16 Feb, 2017 3 commits
  10. 13 Feb, 2017 1 commit
  11. 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
  12. 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
  13. 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
  14. 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
  15. 12 Jan, 2017 1 commit
  16. 11 Jan, 2017 3 commits
  17. 10 Jan, 2017 1 commit
  18. 09 Jan, 2017 1 commit