1. 09 Nov, 2022 2 commits
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 20969aa4
      Marko Mäkelä authored
      20969aa4
    • Marko Mäkelä's avatar
      MDEV-29883 Deadlock between InnoDB statistics update and BLOB insert · 6b91792a
      Marko Mäkelä authored
      This is a backport of commit 8b6a308e
      from MariaDB Server 10.6.11. No attempt to reproduce the hang
      in earlier an earlier version of MariaDB Server than 10.6 was made.
      
      In each caller of fseg_n_reserved_pages() except ibuf_init_at_db_start()
      which is a special case for ibuf.index at database startup, we must hold
      an index latch that prevents concurrent allocation or freeing of index
      pages.
      
      Any operation that allocates or free pages that belong to an index tree
      must first acquire an index latch in non-shared mode, and while
      holding that, acquire an index root page latch in non-shared mode.
      
      btr_get_size(), btr_get_size_and_reserved(): Assert that a strong enough
      index latch is being held.
      
      dict_stats_update_transient_for_index(),
      dict_stats_analyze_index(): Acquire a strong enough index latch.
      
      These operations had followed the same order of acquiring latches in
      every InnoDB version since the very beginning
      (commit c533308a).
      
      The hang was introduced in
      commit 2e814d47 which imported
      mysql/mysql-server@ac74632293bea967b352d1b472abedeeaa921b98
      which failed to strengthen the locking requirements of the function
      btr_get_size().
      6b91792a
  2. 08 Nov, 2022 13 commits
  3. 07 Nov, 2022 6 commits
  4. 05 Nov, 2022 1 commit
    • Vladislav Vaintroub's avatar
      MDEV-29951 server hang in crash handler · 92be8d20
      Vladislav Vaintroub authored
      When trying to output stacktrace, and addr2line is not installed, the
      child process forked by start_addr2line_fork() will fail to do exec(),
      and finish with exit(1).
      
      There is a problem with exit() though - it runs exit handlers,
      and for the forked copy of crashing process, it is a bad idea.
      
      In 10.5+ code for example, exit handlers include
      tpool::task_group static destructors, and it will hang infinitely
      waiting for completion of the outstanding tasks.
      
      The fix is to use _exit() instead, which skips the execution of exit
      handlers
      92be8d20
  5. 03 Nov, 2022 1 commit
  6. 02 Nov, 2022 2 commits
  7. 01 Nov, 2022 1 commit
    • Sergei Golubchik's avatar
      MDEV-29924 Assertion `(((nr) % (1LL << 24)) % (int) log_10_int[6 - dec]) == 0'... · 1a3859ff
      Sergei Golubchik authored
      MDEV-29924 Assertion `(((nr) % (1LL << 24)) % (int) log_10_int[6 - dec]) == 0' failed in my_time_packed_to_binary on SELECT when using TIME field
      
      when assigning the cached item to the Item_cache for the first time
      make sure to use Item_cache::setup(), not Item_cache::store().
      Because the former copies the metadata (and allocates memory, in case
      of Item_cache_row), and Item_cache::decimal must be set for
      comparisons to work correctly.
      1a3859ff
  8. 31 Oct, 2022 1 commit
    • Oleg Smirnov's avatar
      MDEV-29624 MDEV-29655 Fix ASAN errors on pushdown of derived table · 0d927a57
      Oleg Smirnov authored
      Deallocation of TABLE_LIST::dt_handler and TABLE_LIST::pushdown_derived
      was performed in multiple places if code. This not only made the code
      more difficult to maintain but also led to memory leaks and
      ASAN heap-use-after-free errors.
      This commit puts deallocation of TABLE_LIST::dt_handler and
      TABLE_LIST::pushdown_derived to the single point - JOIN::cleanup()
      0d927a57
  9. 30 Oct, 2022 1 commit
    • Brad Smith's avatar
      Fix warning with signal typedef for *BSD · 7d96cb47
      Brad Smith authored
      /usr/ports/pobj/mariadb-10.9.3/mariadb-10.9.3/mysys/my_lock.c:183:7: warning: incompatible function pointer types assigning to 'sig_return' (aka 'void (*)(void)') from 'void (*)(int)' [-Wincompatible-function-pointer-types]
            ALARM_INIT;
            ^~~~~~~~~~
      /usr/ports/pobj/mariadb-10.9.3/mariadb-10.9.3/include/my_alarm.h:43:16: note: expanded from macro 'ALARM_INIT'
                              alarm_signal=signal(SIGALRM,my_set_alarm_variable);
                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/ports/pobj/mariadb-10.9.3/mariadb-10.9.3/mysys/my_lock.c:189:7: warning: incompatible function pointer types passing 'sig_return' (aka 'void (*)(void)') to parameter of type 'void (*)(int)' [-Wincompatible-function-pointer-types]
            ALARM_END;
            ^~~~~~~~~
      /usr/ports/pobj/mariadb-10.9.3/mariadb-10.9.3/include/my_alarm.h:44:41: note: expanded from macro 'ALARM_END'
                                                    ^~~~~~~~~~~~
      /usr/include/sys/signal.h:199:27: note: passing argument to parameter here
      void    (*signal(int, void (*)(int)))(int);
                                   ^
      2 warnings generated.
      
      The prototype is the same for all of the *BSD's.
      
      void
      (*signal(int sigcatch, void (*func)(int sigraised)))(int);
      7d96cb47
  10. 28 Oct, 2022 1 commit
  11. 27 Oct, 2022 2 commits
  12. 26 Oct, 2022 5 commits
  13. 25 Oct, 2022 4 commits
    • Alexey Botchkov's avatar
      MDEV-26161 crash in Gis_point::calculate_haversine · 77951dd7
      Alexey Botchkov authored
      More checks for bad geometry data added.
      77951dd7
    • Sergei Golubchik's avatar
      MDEV-26161 crash in Gis_point::calculate_haversine · e910dff8
      Sergei Golubchik authored
      return an error on invalid gis data
      e910dff8
    • Igor Babaev's avatar
      MDEV-28846 Poor performance when rowid filter contains no elements · 58cd0bd5
      Igor Babaev authored
      When a range rowid filter was used with an index ref access the cost of
      accessing the index entries for the records rejected by the filter was not
      taken into account. For a ref access by an index with big average number
      of records per key this led to poor execution plans if selectivity of the
      used filter was high.
      The patch resolves this problem. It also introduces a minor optimization
      that skips look-ups into a filter that turns out to be empty.
      With this patch the output of ANALYZE stmt reports the number of look-ups
      into used rowid filters.
      The patch also back-ports from 10.5 the code that properly sets the field
      TABLE::file::table for opened temporary tables.
      
      The test cases that were supposed to use rowid filters have been adjusted
      in order to use similar execution plans after this fix.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      58cd0bd5
    • Sergei Golubchik's avatar
      cleanup: put casts in a separate statement · 72e79eaa
      Sergei Golubchik authored
      remove useless if()
      72e79eaa