1. 11 Jun, 2019 1 commit
  2. 10 Jun, 2019 1 commit
    • Marko Mäkelä's avatar
      MDEV-19725 Incorrect error handling in ALTER TABLE · cbac8f93
      Marko Mäkelä authored
      Some I/O functions and macros that are declared in os0file.h used to
      return a Boolean status code (nonzero on success). In MySQL 5.7, they
      were changed to return dberr_t instead. Alas, in MariaDB Server 10.2,
      some uses of functions were not adjusted to the changed return value.
      
      Until MDEV-19231, the valid values of dberr_t were always nonzero.
      This means that some code that was incorrectly checking for a zero
      return value from the functions would never detect a failure.
      
      After MDEV-19231, some tests for ALTER ONLINE TABLE would fail with
      cmake -DPLUGIN_PERFSCHEMA=NO. It turned out that the wrappers
      pfs_os_file_read_no_error_handling_int_fd_func() and
      pfs_os_file_write_int_fd_func() were wrongly returning
      bool instead of dberr_t. Also the callers of these functions were
      wrongly expecting bool (nonzero on success) instead of dberr_t.
      
      This mistake had been made when the addition of these functions was
      merged from MySQL 5.6.36 and 5.7.18 into MariaDB Server 10.2.7.
      
      This fix also reverts commit 40becbc3
      which attempted to work around the problem.
      cbac8f93
  3. 07 Jun, 2019 2 commits
  4. 06 Jun, 2019 5 commits
  5. 05 Jun, 2019 3 commits
  6. 04 Jun, 2019 1 commit
    • Varun Gupta's avatar
      MDEV-18015: Assertion `global_status_var.global_memory_used == 0' failed when... · 7906bee6
      Varun Gupta authored
      MDEV-18015: Assertion `global_status_var.global_memory_used == 0' failed when using UDF , window functions and views
      
      Adding destructor for Group_bound_tracker to free Cached_item_str.
      The Cached_item for window functions are allocated on THD:mem_root
      but the Cached_item_str has value of type string which is allocated on
      the heap, so we need to call free() for it
      7906bee6
  7. 03 Jun, 2019 8 commits
  8. 31 May, 2019 2 commits
    • Vlad Lesin's avatar
      MDEV-18207: ASAN heap-use-after-free in _ma_get_status upon concurrent operations with sequence · c9b49a4b
      Vlad Lesin authored
      The issue is that two MARIA_HA instances shares the same MARIA_STATUS_INFO
      object during UNION execution, so the second MARIA_HA instance state pointer
      MARIA_HA::state points to the MARIA_HA::state_save of the first MARIA instance.
      
      This happens in
      thr_multi_lock(...) {
      ...
      	for (first_lock=data, pos= data+1 ; pos < end ; pos++)
      	{
      ...
      		if (pos[0]->lock == pos[-1]->lock && pos[0]->lock->copy_status)
      			(pos[0]->lock->copy_status)((*pos)->status_param,
      																	(*first_lock)->status_param);
      ...
      	}
      ...
      }
      
      Usually the state is restored from ha_maria::external_lock(...):
      
      \#0  _ma_update_status (param=0x6290000e6270) at ./storage/maria/ma_state.c:309
      \#1  0x00005555577ccb15 in _ma_update_status_with_lock (info=0x6290000e6270) at ./storage/maria/ma_state.c:361
      \#2  0x00005555577c7dcc in maria_lock_database (info=0x6290000e6270, lock_type=2) at ./storage/maria/ma_locking.c:66
      \#3  0x0000555557802ccd in ha_maria::external_lock (this=0x61d0001b1308, thd=0x62a000048270, lock_type=2) at ./storage/maria/ha_maria.cc:2727
      
      But _ma_update_status() does not take into account the case when
      MARIA_HA::status points to the MARIA_HA::state_save of the other MARIA_HA
      instance.
      
      The fix is to restore MARIA_HA::state in ha_maria::external_lock() after
      maria_lock_database() call for transactional tables.
      c9b49a4b
    • Marko Mäkelä's avatar
      Define page_id_t in buf0types.h · 9d142a89
      Marko Mäkelä authored
      9d142a89
  9. 30 May, 2019 2 commits
  10. 29 May, 2019 7 commits
  11. 28 May, 2019 8 commits