1. 26 Mar, 2021 1 commit
    • Marko Mäkelä's avatar
      MDEV-25265: ALTER TABLE...IMPORT TABLESPACE fails after DROP INDEX · 2e67b9f6
      Marko Mäkelä authored
      A side effect of the MDEV-24589 bug fix is that if
      FLUSH TABLE...FOR EXPORT is initiated before the history of an
      earlier DROP INDEX operation has been purged, then the data file
      will contain allocated pages that belonged to the dropped indexes.
      These pages would never be freed after a subsequent IMPORT TABLESPACE.
      
      We will work around this regression by making IMPORT TABLESPACE
      tolerate pages that refer to an unknown index.
      2e67b9f6
  2. 25 Mar, 2021 1 commit
    • Daniel Black's avatar
      MEM_CHECK_DEFINED: replace HAVE_valgrind · bcb9ca41
      Daniel Black authored
      HAVE_valgrind_or_MSAN to HAVE_valgrind was incorrect in
      af784385.
      
      In my_valgrind.h when clang exists (hence no __has_feature(memory_sanitizer),
      and -DWITH_VALGRIND=1, but without memcheck.h, we end up with a MEM_CHECK_DEFINED
      being empty.
      
      If we are also doing a CMAKE_BUILD_TYPE=Debug this results a number of
      [-Werror,-Wunused-variable] errors because MEM_CHECK_DEFINED is empty.
      With MEM_CHECK_DEFINED empty, there becomes no uses of this of the
      fixed field and innodb variables in this patch.
      
      So we stop using HAVE_valgrind as catchall and use the name
      HAVE_CHECK_MEM to indicate that a CHECK_MEM_DEFINED function exists.
      
      Reviewer: Monty
      
      Corrects: af784385
      bcb9ca41
  3. 23 Mar, 2021 4 commits
  4. 22 Mar, 2021 2 commits
  5. 20 Mar, 2021 4 commits
  6. 19 Mar, 2021 10 commits
  7. 18 Mar, 2021 15 commits
    • Igor Babaev's avatar
      MDEV-25112 MIN/MAX aggregation over an indexed column may return wrong result · b34bb81e
      Igor Babaev authored
      If a query with implicit grouping contains in MIN/MAX set function in the
      select list over a column that is a part of an index then the query
      might be subject to MIN/MAX optimization. With this optimization the
      server performs a look-up into an index, fetches a value of the column C
      used in the MIN/MAX function and substitute the MIN/MAX expression for this
      value. This allows to eliminate the table containing C from further join
      processing. In order the optimization to be applied the WHERE condition
      must be a conjunction of simple equality/inequality predicates or/and
      BETWEEN predicates.
      The bug fixed in the patch resulted in fetching a wrong value from the
      index used for MIN/MAX optimization. It may happened when a BETWEEN
      predicate containing the MIN/MAX value followed a strict inequality.
      
      Approved by dmitry.shulga@mariadb.com
      b34bb81e
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 190a8312
      Marko Mäkelä authored
      190a8312
    • Marko Mäkelä's avatar
      MDEV-25121: innodb_flush_method=O_DIRECT fails on compressed tables · 12672542
      Marko Mäkelä authored
      Tests with 4096-byte sector size confirm that it is
      safe to use O_DIRECT with page_compressed tables.
      That had been disabled on Linux, in an attempt to fix MDEV-21584
      which had been filed for the O_DIRECT problems earlier.
      
      The fil_node_t::block_size was being set mostly correctly until
      commit 10dd290b (MDEV-17380)
      introduced a regression in MariaDB Server 10.4.4.
      
      fil_node_open_file(): Only avoid setting O_DIRECT on
      ROW_FORMAT=COMPRESSED tables that use KEY_BLOCK_SIZE=1 or 2
      (1024 or 2048 bytes).
      
      fil_ibd_create(): Avoid setting O_DIRECT on ROW_FORMAT=COMPRESSED tables
      that use KEY_BLOCK_SIZE=1 or 2 (1024 or 2048 bytes).
      
      fil_node_t::find_metadata(): Require fstat() to be always invoked
      outside Microsoft Windows, so that fil_node_t::block_size can be set.
      
      fil_node_t::read_page0(): Rely on find_metadata() to assign block_size.
      
      Thanks to Vladislav Vaintroub for testing this on Microsoft Windows
      using an old-fashioned rotational hard disk with 4KiB sector size.
      
      Reviewed by: Vladislav Vaintroub
      
      This is a port of commit 00f620b2
      and commit 6505662c from 10.2.
      12672542
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 39c015b7
      Marko Mäkelä authored
      39c015b7
    • Marko Mäkelä's avatar
      MDEV-25125 Assertion failure in fetch_data_into_cache_low() · 867724fd
      Marko Mäkelä authored
      Before MDEV-14638, there was no race condition between the
      execution of fetch_data_into_cache() and transaction commit.
      
      fetch_data_into_cache(): Acquire trx_t::mutex before checking
      trx_t::state, to prevent a concurrent transition from
      TRX_STATE_COMMITTED_IN_MEMORY to TRX_STATE_NOT_STARTED
      in trx_commit_in_memory().
      867724fd
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · 19052b6d
      Marko Mäkelä authored
      19052b6d
    • Marko Mäkelä's avatar
      MDEV-10682 Race condition between ANALYZE and STATS_AUTO_RECALC · c557e954
      Marko Mäkelä authored
      ha_innobase::info_low(): While collecting statistics for
      ANALYZE TABLE, ensure that dict_stats_process_entry_from_recalc_pool()
      is not executing on the same table.
      
      We observed result differences for the test innodb.innodb_stats because
      dict_stats_empty_index() was being invoked by the background statistics
      calculation while ha_innobase::analyze() was executing
      dict_stats_analyze_index_level().
      c557e954
    • Marko Mäkelä's avatar
      MDEV-25121: innodb_flush_method=O_DIRECT fails on compressed tables · 6505662c
      Marko Mäkelä authored
      Tests with 4096-byte sector size confirm that it is
      safe to use O_DIRECT with page_compressed tables.
      That had been disabled on Linux, in an attempt to fix MDEV-21584
      which had been filed for the O_DIRECT problems earlier.
      
      The fil_node_t::block_size was being set mostly correctly until
      commit 10dd290b (MDEV-17380)
      introduced a regression in MariaDB Server 10.4.4.
      
      fil_node_t::read_page0(): Initialize fil_node_t::block_size.
      This will probably make similar code in fil_space_extend_must_retry()
      redundant, but we play it safe and will not remove that code.
      
      Thanks to Vladislav Vaintroub for testing this on Microsoft Windows
      using an old-fashioned rotational hard disk with 4KiB sector size.
      
      Reviewed by: Vladislav Vaintroub
      6505662c
    • Vladislav Vaintroub's avatar
      MDEV-21584 - portability fix · 00f620b2
      Vladislav Vaintroub authored
      This patch implements OS_DATA_FILE_NO_O_DIRECT on Windows.
      00f620b2
    • Marko Mäkelä's avatar
      Cleanup: Remove unused OS_DATA_TEMP_FILE · 14a8b700
      Marko Mäkelä authored
      This had been originally added in
      mysql/mysql-server@192bb153b675fe09037a53e456a79eee7211e3a7
      with the motivation to disable O_DIRECT for the dedicated tablespace
      for temporary tables. In MariaDB Server,
      commit 5eb53955 (MDEV-12227)
      should be a better solution.
      
      The code became orphaned later in
      mysql/mysql-server@c61244c0e6c58727cffebfb312ac415a463fa0fe
      and it had been applied to MariaDB Server 10.2.2 in
      commit 2e814d47 and
      commit fec844ac.
      
      Thanks to Vladislav Vaintroub for spotting this.
      14a8b700
    • Jan Lindström's avatar
      MDEV-24916 : Assertion `current_stmt_binlog_format == BINLOG_FORMAT_STMT ||... · c9ba6689
      Jan Lindström authored
      MDEV-24916 : Assertion `current_stmt_binlog_format == BINLOG_FORMAT_STMT || current_stmt_binlog_format == BINLOG_FORMAT_ROW' failed in THD::is_current_stmt_binlog_format_row
      
      Store old value of binlog format before wsrep code so that
      if we bail out because wsrep is not ready for connections
      we can restore binlog format correctly.
      c9ba6689
    • Jan Lindström's avatar
      MDEV-18874 : Galera test MW-286 causes Mutex = TTASEventMutex<GenericPolicy>]:... · f4e14f0e
      Jan Lindström authored
      MDEV-18874 : Galera test MW-286 causes Mutex = TTASEventMutex<GenericPolicy>]: Assertion `!is_owned()' failed. assertion
      
      MDEV-24649 galera.galera_bf_lock_wait MTR failed with sigabrt: Assertion `!is_ow
      ned()' failed in sync0policy.ic on MutexDebug with Mutex = TTASEventMutex<GenericPolicy>
      
      Bug was fixed as part of MDEV-23328, this just adds test cases to
      regression set.
      f4e14f0e
    • Daniel Black's avatar
      crc32c: Fix AIX compulation - ALIGN defined · 5dbea46c
      Daniel Black authored
      ALIGN was defined already:
      
      mysys/crc32/crc32c.cc:390: warning: "ALIGN" redefined
       #define ALIGN(n, m)     ((n + ((1 << m) - 1)) & ~((1 << m) - 1))
      
      In file included from /root/aix/build/include/my_global.h:543,
                       from /root/aix/build/mysys/crc32/crc32c.cc:22:
      /opt/freeware/lib/gcc/powerpc-ibm-aix7.1.0.0/8/include-fixed/sys/socket.h:788: note: this is the location of the previous definition
       #define ALIGN(p)                (ulong)((caddr_t)(p) + MACHINE_ALIGNMENT - 1 - \
      5dbea46c
    • Etienne Guesnet's avatar
      CRC32 on AIX · 60d1461a
      Etienne Guesnet authored
      60d1461a
    • Daniel Black's avatar
      mariadb.pc: plugindir is used · 69740581
      Daniel Black authored
      As evidenced by converstation on Zulip,
      knowing where to install a plugin is important too.
      69740581
  8. 17 Mar, 2021 3 commits