1. 13 Jul, 2016 5 commits
  2. 12 Jul, 2016 15 commits
  3. 11 Jul, 2016 2 commits
  4. 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
  5. 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
  6. 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
  7. 04 Jul, 2016 1 commit
  8. 03 Jul, 2016 3 commits
  9. 01 Jul, 2016 3 commits
  10. 30 Jun, 2016 2 commits
  11. 29 Jun, 2016 3 commits
    • Nirbhay Choubey's avatar
      MDEV-9423: cannot add new node to the cluser: Binlog.. · 3fd214c8
      Nirbhay Choubey authored
      .. file '/var/log/mysql/mariadb-bin.000001' not found in binlog
      index, needed for recovery. Aborting.
      
      In Galera cluster, while preparing for rsync/xtrabackup based
      SST, the donor node takes an FTWRL followed by (REFRESH_ENGINE_LOG
      in rsync based state transfer and) REFRESH_BINARY_LOG. The latter
      rotates the binary log and logs Binlog_checkpoint_log_event
      corresponding to the penultimate binary log file into the new file.
      The checkpoint event for the current file is later logged
      synchronously by binlog_background_thread.
      
      Now, since in rsync/xtrabackup based snapshot state transfer methods,
      only the last binary log file is transferred to the joiner node; the
      file could get transferred even before the checkpoint event for the
      same file gets written to it. As a result, the joiner node would fail
      to start complaining about the missing binlog file needed for recovery.
      
      In order to fix this, a mechanism has been put in place to make
      REFRESH_BINARY_LOG operation wait for Binlog_checkpoint_log_event
      to be logged for the current binary log file if the node is part of
      a Galera cluster. As further safety, during rsync based state transfer
      the donor node now acquires and owns LOCK_log for the duration of file
      transfer during SST.
      3fd214c8
    • Sergei Golubchik's avatar
      update tests for 32bit · 33492ec8
      Sergei Golubchik authored
      33492ec8
    • Sergei Golubchik's avatar
      valgrind.supp: fix a typo · f10b7db1
      Sergei Golubchik authored
      f10b7db1
  12. 28 Jun, 2016 1 commit