1. 28 Oct, 2023 1 commit
  2. 24 Oct, 2023 1 commit
  3. 23 Oct, 2023 6 commits
    • Yuchen Pei's avatar
    • Yuchen Pei's avatar
      MDEV-32507 Spider: Use $MTR_SUITE_DIR for init-file files · 15a1168b
      Yuchen Pei authored
      This should fix certain CI builds where the spider suite test files
      and the main suite test files do not follow the same relative paths
      relations as the mariadb source.
      15a1168b
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.10 · 5a8fca5a
      Marko Mäkelä authored
      5a8fca5a
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · b21f52ee
      Marko Mäkelä authored
      b21f52ee
    • Marko Mäkelä's avatar
      MDEV-32552 Write-ahead logging is broken for freed pages · b5e43a1d
      Marko Mäkelä authored
      buf_page_free(): Flag the freed page as modified if it is found in
      the buffer pool.
      
      buf_flush_page(): If the page has been freed, ensure that the log
      for it has been durably written, before removing the page
      from buf_pool.flush_list.
      
      FindBlockX: Find also MTR_MEMO_PAGE_X_MODIFY in order to avoid an
      occasional failure of innodb.innodb_defrag_concurrent, which involves
      freeing and reallocating pages in the same mini-transaction.
      
      This fixes a regression that was introduced in
      commit a35b4ae8 (MDEV-15528).
      
      This logic was tested by commenting out the $shutdown_timeout line
      from a test and running the following:
      
      ./mtr --rr innodb.scrub
      rr replay var/log/mysqld.1.rr/mariadbd-0
      
      A breakpoint in the modified buf_flush_page() was hit, and the
      FIL_PAGE_LSN of that page had been last modified during the
      mtr_t::commit() of a mini-transaction where buf_page_free()
      had been executed on that page.
      b5e43a1d
    • Oleksandr Byelkin's avatar
      new CC v3.3 · 0a4103e6
      Oleksandr Byelkin authored
      0a4103e6
  4. 20 Oct, 2023 1 commit
    • Yuchen Pei's avatar
      MDEV-32515 Use $MYSQLD_LAST_CMD in spider/bugfix.mdev_30370 · 057fd528
      Yuchen Pei authored
      $MYSQLD_CMD uses .1 as the defaults-group-suffix, which could cause
      the use of the default port (3306) or socket, which will fail in
      environment where these defaults are already in use by another server.
      
      Adding an extra --defaults-group-suffix=.1.1 does not help, because
      the first flag wins.
      
      So we use $MYSQLD_LAST_CMD instead, which uses the correct suffix.
      
      The extra innodb buffer pool warning is irrelevant to the goal of the
      test (running --wsrep-recover with --plug-load-add=ha_spider should
      not cause hang)
      057fd528
  5. 19 Oct, 2023 8 commits
    • Sergei Petrunia's avatar
      MDEV-32113: utf8mb3_key_col=utf8mb4_value cannot be used for ref · 4941ac91
      Sergei Petrunia authored
      (Variant#3: Allow cross-charset comparisons, use a special
      CHARSET_INFO to create lookup keys. Review input addressed.)
      
      Equalities that compare utf8mb{3,4}_general_ci strings, like:
      
        WHERE ... utf8mb3_key_col=utf8mb4_value    (MB3-4-CMP)
      
      can now be used to construct ref[const] access and also participate
      in multiple-equalities.
      This means that utf8mb3_key_col can be used for key-lookups when
      compared with an utf8mb4 constant, field or expression using '=' or
      '<=>' comparison operators.
      
      This is controlled by optimizer_switch='cset_narrowing=on', which is
      OFF by default.
      
      IMPLEMENTATION
      Item value comparison in (MB3-4-CMP) is done using utf8mb4_general_ci.
      This is valid as any utf8mb3 value is also an utf8mb4 value.
      
      When making index lookup value for utf8mb3_key_col, we do "Charset
      Narrowing": characters that are in the Basic Multilingual Plane (=BMP) are
      copied as-is, as they can be represented in utf8mb3. Characters that are
      outside the BMP cannot be represented in utf8mb3 and are replaced
      with U+FFFD, the "Replacement Character".
      
      In utf8mb4_general_ci, the Replacement Character compares as equal to any
      character that's not in BMP. Because of this, the constructed lookup value
      will find all index records that would be considered equal by the original
      condition (MB3-4-CMP).
      Approved-by: default avatarMonty <monty@mariadb.org>
      4941ac91
    • Monty's avatar
      MDEV-32476 LeakSanitizer errors in get_quick_select or Assertion ... · 6a674c31
      Monty authored
      Problem was that JOIN_TAB::cleanup() was not run because
      JOIN::top_join_tab_count was not set in case of early errors.
      
      Fixed by setting JOIN::tab_join_tab_count when JOIN_TAB's are allocated.
      
      Something that should eventually be fixed:
      - Cleaning up JOIN_TAB's is now done in 3 different loops.
        JOIN_TAB::cleanup() is only doing a partial cleanup. Other cleanups
        are done outside of JOIN_TAB::cleanup().
      
      The above should be fixed so that JOIN_TAB::cleanup() is freeing
      everything related to it's own memory, including all its sub JOIN_ TAB's.
      JOIN::cleanup() should only loop over all it's top JOIN_TAB's and call
      JOIN_TAB::cleanup() on these.
      This will greatly simplify and speedup the current code (as we now do some
      cleanup's twice).
      6a674c31
    • Monty's avatar
      Fixed crash in is_stat_table() when using hash joins. · a1b6befc
      Monty authored
      Other usage if persistent statistics is checking 'stats_is_read' in
      caller, which is why this was not noticed earlier.
      
      Other things:
      - Simplified no_stat_values_provided
      a1b6befc
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.10 · c92d0674
      Marko Mäkelä authored
      c92d0674
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 6991b1c4
      Marko Mäkelä authored
      6991b1c4
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-31851 After crash recovery, undo tablespace fails to open · 85751ed8
      Thirunarayanan Balathandayuthapani authored
      srv_all_undo_tablespaces_open(): While opening the extra unused
      undo tablespaces, InnoDB should use ULINT_UNDEFINED instead of
      SRV_SPACE_ID_UPPER_BOUND.
      85751ed8
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-31851 After crash recovery, undo tablespace fails to open · dbba1bb1
      Thirunarayanan Balathandayuthapani authored
      recv_recovery_from_checkpoint_start(): InnoDB should add the
      redo log block header + trailer size while checking the	log
      sequence number in log file with log sequence number in the
      system tablespace first page.
      dbba1bb1
    • Marko Mäkelä's avatar
      MDEV-32144 fixup · 2d6dc65d
      Marko Mäkelä authored
      In commit 384eb570 the debug check
      was relaxed in trx_undo_header_create(), not in the intended function
      trx_undo_write_xid().
      2d6dc65d
  6. 18 Oct, 2023 3 commits
    • Marko Mäkelä's avatar
      MDEV-32511: Race condition between checkpoint and page write · cfd17881
      Marko Mäkelä authored
      fil_aio_callback(): Invoke fil_node_t::complete_write() before
      releasing any page latch, so that in case a log checkpoint is
      executed roughly concurrently with the first write into a file
      since the previous checkpoint, we will not miss a fdatasync()
      or fsync() call to make the write durable.
      cfd17881
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.10 · c857259e
      Marko Mäkelä authored
      c857259e
    • Marko Mäkelä's avatar
      MDEV-32511 Assertion !os_aio_pending_writes() failed · bf7c6fc2
      Marko Mäkelä authored
      In MemorySanitizer builds of 10.10 and 10.11, we would rather often
      have the assertion fail in innodb_init() during mariadb-backup --prepare.
      The assertion could also fail during InnoDB startup, but less often.
      
      Before commit 685d958e in 10.8 the
      log file cleanup after a successfully applied backup is different,
      and the os_aio_pending_writes() assertion is in srv0start.cc.
      
      IORequest::write_complete(): Invoke node->complete_write() before
      releasing the page latch, so that a log checkpoint that is about to
      execute concurrently will not miss a fdatasync() or fsync() on the
      file, in case this was the first write since the last such call.
      
      create_log_file(), srv_start(): Replace the debug assertion with
      a debug check. For all intents and purposes, all writes could have
      been completed but some write_io_callback() may not have invoked
      io_slots::release() yet.
      bf7c6fc2
  7. 17 Oct, 2023 5 commits
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-31851 After crash recovery, undo tablespace fails to open · 3da5d047
      Thirunarayanan Balathandayuthapani authored
      Problem:
      ========
      - InnoDB fails to open undo tablespace when page0 is corrupted
      and fails to throw error.
      
      Solution:
      =========
      - InnoDB throws DB_CORRUPTION error when InnoDB encounters
      page0 corruption of undo tablespace.
      
      - InnoDB restores the page0 of undo tablespace from
      doublewrite buffer if it encounters page corruption
      
      - Moved Datafile::restore_from_doublewrite() to
      recv_dblwr_t::restore_first_page(). So that undo
      tablespace and system tablespace can use this function
      instead of duplicating the code
      
      srv_undo_tablespace_open(): Returns 0 if file doesn't exist
      or ULINT_UNDEFINED if page0 is corrupted.
      3da5d047
    • Monty's avatar
      Fixed memory leak when using histograms · a49ebf71
      Monty authored
      This was introduced in last merge with 10.6
      The reason is that 10.6 does not need anything special to free histograms
      as everything is allocated on a memroot.
      In 10.10 histograms is using the vector class, which has some problems:
      - No automatic free
      - No memory usage accounting
      (we should at some point remove vector usage because of the above problem)
      
      Fixed by expliciting freeing histograms when freeing TABLE_STATISTICS
      objects.
      a49ebf71
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.10 · 0563106b
      Marko Mäkelä authored
      0563106b
    • Yuchen Pei's avatar
      [fixup] Spider fixup after merge · 8f905942
      Yuchen Pei authored
      - Remove some references to dead macros
      8f905942
    • Yuchen Pei's avatar
      Spider: update reason for disabling spider/bugfix.mdev_27239 · 515f8de2
      Yuchen Pei authored
      It was disabled in the recent 10.6->10.10 merge.
      515f8de2
  8. 16 Oct, 2023 2 commits
  9. 14 Oct, 2023 4 commits
    • Monty's avatar
      MDEV-32449 Server crashes in Alter_info::add_stat_drop_index upon CREATE TABLE · 1c554459
      Monty authored
      Fixed missing initialization of Alter_info()
      
      This could cause crashes in some create table like scenarios
      where some generated indexes where automatically dropped.
      
      I also added a test that we do not try to drop from index_stats for
      temporary tables.
      1c554459
    • Monty's avatar
      Do not create histograms for single column unique key · ec277a70
      Monty authored
      The intentention was always to not create histograms for single value
      unique keys (as histograms is not useful in this case), but because of
      a bug in the code this was still done.
      
      The changes in the test cases was mainly because hist_size is now NULL
      for these kind of columns.
      ec277a70
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.10 · d5e15424
      Marko Mäkelä authored
      The MDEV-29693 conflict resolution is from Monty, as well as is
      a bug fix where ANALYZE TABLE wrongly built histograms for
      single-column PRIMARY KEY.
      Also includes a fix for safe_malloc error reporting.
      
      Other things:
      - Copied main.log_slow from 10.4 to avoid mtr issue
      
      Disabled test:
      - spider/bugfix.mdev_27239 because we started to get
        +Error	1429 Unable to connect to foreign data source: localhost
        -Error	1158 Got an error reading communication packets
      - main.delayed
        - Bug#54332 Deadlock with two connections doing LOCK TABLE+INSERT DELAYED
          This part is disabled for now as it fails randomly with different
          warnings/errors (no corruption).
      d5e15424
    • Sergei Golubchik's avatar
      Revert "MDEV-29091: Correct event_name in PFS for wait caused by FOR UPDATE" · ea0b1ccd
      Sergei Golubchik authored
      This reverts commit 03c9a4ef.
      
      The fix is wrong. It was doing this: if the uninitialized
      wait->m_class has some specific value, then don't initialize it.
      ea0b1ccd
  10. 13 Oct, 2023 4 commits
  11. 12 Oct, 2023 4 commits
  12. 11 Oct, 2023 1 commit
    • Marko Mäkelä's avatar
      MDEV-32364 Server crashes when starting server with high innodb_log_buffer_size · c72ddeea
      Marko Mäkelä authored
      log_t::create(), log_t::attach(): Return whether the initialisation
      succeeded. It may fail if too large an innodb_log_buffer_size is specified.
      
      recv_sys_t::close_files(): Actually close the data files so that the
      test mariabackup.huge_lsn,strict_crc32 will not fail on Microsoft Windows
      when renaming ib_logfile101 due to a leaked file handle of ib_logfile0.
      
      recv_sys_t::find_checkpoint(): Register recv_sys.files[0] as OS_FILE_CLOSED
      because the file handle has already been attached to log_sys.log and
      we do not want to close the file twice.
      
      recv_sys_t::read(): Access the first log file via log_sys.log.
      
      This is a port of commit 6e9b421f
      adapted to commit 685d958e (MDEV-14425).
      
      The test case is omitted, because it would fail to fail when the log
      is stored in persistent memory (or "fake PMEM" on Linux /dev/shm).
      c72ddeea