1. 27 Jul, 2016 1 commit
    • Sergei Petrunia's avatar
      MDEV-10389: Query returns different results on a debug vs non-debug build · a63ceaea
      Sergei Petrunia authored
      The problem was caused by a merged semi-join, which contained a non-merged
      semi-join, which used references to the top-level query in the left_expr.
      
      When moving non-merged semi-join from the subquery to its parent, do not
      forget to call fix_after_pullout for its Item_subselect. We need to do
      that specifically, because non-merged semi-joins do not have their
      IN-equality in the WHERE clause at this stage.
      a63ceaea
  2. 22 Jul, 2016 1 commit
  3. 21 Jul, 2016 1 commit
  4. 19 Jul, 2016 1 commit
  5. 18 Jul, 2016 1 commit
  6. 14 Jul, 2016 1 commit
  7. 13 Jul, 2016 6 commits
  8. 12 Jul, 2016 15 commits
  9. 11 Jul, 2016 2 commits
  10. 08 Jul, 2016 2 commits
    • Sergey Vojtovich's avatar
      MDEV-9363 - Mroonga tests with datetime field fail on Solaris in buildbot · ae511cbe
      Sergey Vojtovich authored
      On Solaris mktime() adds one extra day to tm_mday field and returns appropriate
      value for dates 1600-01-01 and earlier. That is 1600-01-01 becomes 1600-01-02.
      
      Solaris mktime manual excerpts:
        ...
        The tm_year member must be for year 1901 or later.  Calendar
        times  before  20:45:52  UTC,  December  13,  1901  or after
        03:14:07 UTC,  January 19, 2038 cannot be represented. Port-
        able  applications  should  not  try  to create dates before
        00:00:00 UTC, January 1, 1970 or after 00:00:00 UTC, January
        1, 2038.
        ...
        The  mktime() function assumes Gregorian dates. Times before
        the  adoption  of the Gregorian calendar will not match his-
        torial records.
        ...
      
      According to manual Mroonga only supports dates and datetimes after 1900:
      https://mariadb.com/kb/en/mariadb/about-mroonga/
      
      Technically these tests cover unsupported values and should fail on all
      platforms. Disable tests until the problem is fixed upstream.
      ae511cbe
    • Sergey Vojtovich's avatar
      MDEV-10010 - Recursive call to mysql_rwlock_rdlock for LOCK_system_variables_hash · ecb27d26
      Sergey Vojtovich authored
      Avoid recursive LOCK_system_variables_hash acquisition in
      intern_sys_var_ptr() by pre-syncing dynamic session variables.
      ecb27d26
  11. 06 Jul, 2016 1 commit
    • Sergei Golubchik's avatar
      MDEV-7973 bigint fail with gcc 5.0 · e81455bb
      Sergei Golubchik authored
      -LONGLONG_MIN is the undefined behavior in C.
      longlong2decimal() used to do this:
      
        int longlong2decimal(longlong from, decimal_t *to) {
          if ((to->sign= from < 0))
            return ull2dec(-from, to);
          return ull2dec(from, to);
      
      and later in ull2dec() (DIG_BASE is 1000000000):
      
        static int ull2dec(ulonglong from, decimal_t *to) {
          for (intg1=1; from >= DIG_BASE; intg1++, from/=DIG_BASE) {}
      
      this breaks in gcc-5 at -O3. Here ull2dec is inlined into
      longlong2decimal. And gcc-5 believes that 'from' in the
      inlined ull2dec is always a positive integer (indeed, if it was
      negative, then -from was used instead). So gcc-5 uses
      *signed* comparison with DIG_BASE.
      
      Fix: make a special case for LONGLONG_MIN, don't negate it
      e81455bb
  12. 05 Jul, 2016 2 commits
    • Sergei Petrunia's avatar
      MDEV-10324: Server crash in get_sel_arg_for_keypart or Assertion · 95c286ce
      Sergei Petrunia authored
      The crash was caused by this problem:
      get_best_group_min_max() tries to construct query plans for keys that
      are not processed by the range optimizer. This wasn't a problem as long
      as SEL_TREE::keys was an array of MAX_KEY elements.
      However, now it is a Mem_root_array and only has elements for the used
      keys, and get_best_group_min_max attempts to address beyond the end of
      the array.
      
      The obvious way to fix the crash was to port (and improve) a part of
      96fcfcbd7b5120e8f64fd45985001eca8d36fbfb from mysql-5.7. This makes
      get_best_group_min_max not to consider indexes that Mem_root_arrays
      have no element for.
      
      After that, I got non-sensical query plans (see MDEV-10325 for details).
      Fixed that by making get_best_group_min_max to check if the index is in
      table->keys_in_use_for_group_by bitmap.
      95c286ce
    • Alexander Barkov's avatar
  13. 04 Jul, 2016 1 commit
  14. 03 Jul, 2016 3 commits
  15. 01 Jul, 2016 2 commits