1. 24 May, 2023 8 commits
  2. 23 May, 2023 7 commits
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 270eeeb5
      Marko Mäkelä authored
      270eeeb5
    • Marko Mäkelä's avatar
      MDEV-31234 fixup: Allow innodb_undo_log_truncate=ON after upgrade · 9c35f9c9
      Marko Mäkelä authored
      trx_purge_truncate_history(): Relax a condition that would prevent
      undo log truncation if the undo log tablespaces were "contaminated"
      by the bug that commit e0084b9d fixed.
      That is, trx_purge_truncate_rseg_history() would have invoked
      flst_remove() on TRX_RSEG_HISTORY but not reduced TRX_RSEG_HISTORY_SIZE.
      
      To avoid any regression with normal operation, we implement this
      fixup during slow shutdown only. The condition on the history list
      being empty is necessary: without it, in the test
      innodb.undo_truncate_recover there may be much fewer than the
      expected 90,000 calls to row_purge() before the truncation.
      That is, we would truncate the undo tablespace before actually having
      processed all undo log records in it.
      
      To truncate such "contaminated" or "bloated" undo log tablespaces
      (when using innodb_undo_tablespaces=2 or more)
      you can execute the following SQL:
      
      BEGIN;INSERT mysql.innodb_table_stats VALUES('','',DEFAULT,0,0,0);ROLLBACK;
      SET GLOBAL innodb_undo_log_truncate=ON, innodb_fast_shutdown=0;
      SHUTDOWN;
      
      The first line creates a dummy InnoDB transaction, to ensure that there
      will be some history to be purged during shutdown and that the undo
      tablespaces will be truncated.
      9c35f9c9
    • Monty's avatar
      Optimized version of safe_strcpy() · a7adfd4c
      Monty authored
      Note: We should replace most case of safe_strcpy() with strmake() to avoid
      the not needed zerofill.
      a7adfd4c
    • Monty's avatar
      MDEV-28285 Unexpected result when combining DISTINCT, subselect and LIMIT · 92d2ceac
      Monty authored
      The problem was that when  JOIN_TAB::remove_duplicates() noticed there
      can only be one possible row in the output, it adjusted limits but
      didn't take into account any possible offset.
      
      Fixed by not adjusting limit offset when setting one-row-limit.
      92d2ceac
    • Monty's avatar
      MDEV-31083 ASAN use-after-poison in myrg_attach_children · cd37e494
      Monty authored
      The reason for ASAN report was that the MERGE and MYISAM file
      had different key definitions, which is not allowed.
      
      Fixed by ensuring that the MERGE code is not copying more key stats
      than what is in the MyISAM file.
      
      Other things:
      - Give an error if different MyISAM files has different number of
        key parts.
      cd37e494
    • Monty's avatar
      Update main.selectivity test and results · c7e04af8
      Monty authored
      c7e04af8
    • Monty's avatar
      Make install.db read only in mtr · 6a031406
      Monty authored
      This ensures that no mtr test can change install.db after it's initial
      creation as changing it while as another thread is coping it will lead to
      failures in at least InnoDB and Aria recovery.
      
      Fixed spider/bugfix.mdev_30370 that was wrongly used install.db
      6a031406
  3. 22 May, 2023 6 commits
    • Monty's avatar
      Remove warning of not freed memory if mysqld aborts · b0c285bb
      Monty authored
      Fixes warning when doing:
      ./sql/mariadbd --socket=/tmp/xxxx/ddd
      b0c285bb
    • Monty's avatar
      MDEV-6768 Wrong result with aggregate with join with no result set · 16258677
      Monty authored
      When a query does implicit grouping and join operation produces an empty
      result set, a NULL-complemented row combination is generated.
      However, constant table fields still show non-NULL values.
      
      What happens in the is that end_send_group() is called with a
      const row but without any rows matching the WHERE clause.
      This last part is shown by 'join->first_record' not being set.
      
      This causes item->no_rows_in_result() to be called for all items to reset
      all sum functions to their initial state. However fields are not set
      to NULL.
      
      The used fix is to produce NULL-complemented records for constant tables
      as well. Also, reset the constant table's records back in case we're
      in a subquery which may get re-executed.
      An alternative fix would have item->no_rows_in_result() also work
      with Item_field objects.
      
      There is some other issues with the code:
      - join->no_rows_in_result_called is used but never set.
      - Tables that are used with group functions are not properly marked as
        maybe_null, which is required if the table rows should be regarded as
        null-complemented (not existing).
      - The code that tries to detect if mixed_implicit_grouping should be set
        didn't take into account all usage of fields and sum functions.
      - Item_func::restore_to_before_no_rows_in_result() called the wrong
        function.
      - join->clear() does not use a table_map argument to clear_tables(),
        which caused it to ignore constant tables.
      - unclear_tables() does not correctly restore status to what is
        was before clear_tables().
      
      Main bug fix was to always use a table_map argument to clear_tables() and
      always use join->clear() and clear_tables() together with unclear_tables().
      
      Other fixes:
      - Fixed Item_func::restore_to_before_no_rows_in_result()
      - Set 'join->no_rows_in_result_called' when no_rows_in_result_set()
        is called.
      - Removed not used argument from setup_end_select_func().
      - More code comments
      - Ensure that end_send_group() modifies the same fields as are in the
        result set.
      - Changed return_zero_rows() to use pointers instead of references,
        similar to the rest of the code.
      
      Reviewer: Sergei Petrunia <sergey@mariadb.com>
      16258677
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 3bd10b57
      Marko Mäkelä authored
      3bd10b57
    • Marko Mäkelä's avatar
      MDEV-29593 fixup: Avoid a leak if rseg.undo_cached is corrupted · a5ce335a
      Marko Mäkelä authored
      trx_purge_truncate_rseg_history(): Avoid a leak similar to the one
      that was fixed in MDEV-31324, in case a supposedly cached undo log
      page is not found in the rseg.undo_cached list.
      a5ce335a
    • Daniel Black's avatar
      MDEV-31268: Fedora mariadb-connector-c-config conflicts with MariaDB's MariaDB-common · c0adb05b
      Daniel Black authored
      The previous fix in MDEV-24629 had a version end of life date.
      
      Thanks @pgnd on Zulip for noticing.
      c0adb05b
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · eb2e0744
      Marko Mäkelä authored
      eb2e0744
  4. 21 May, 2023 2 commits
    • Teemu Ollakka's avatar
      MDEV-29293 MariaDB stuck on starting commit state · f3071602
      Teemu Ollakka authored
      This commit contains a merge from 10.5-MDEV-29293-squash
      into 10.6.
      
      Although the bug MDEV-29293 was not reproducible with 10.6,
      the fix contains several improvements for wsrep KILL query and
      BF abort handling, and addresses the following issues:
      
      * MDEV-30307 KILL command issued inside a transaction is
        problematic for galera replication:
        This commit will remove KILL TOI replication, so Galera side
        transaction context is not lost during KILL.
      * MDEV-21075 KILL QUERY maintains nodes data consistency but
        breaks GTID sequence: This is fixed as well as KILL does not
        use TOI, and thus does not change GTID state.
      * MDEV-30372 Assertion in wsrep-lib state: This was caused by
        BF abort or KILL when local transaction was in the middle
        of group commit. This commit disables THD::killed handling
        during commit, so the problem is avoided.
      * MDEV-30963 Assertion failure !lock.was_chosen_as_deadlock_victim
        in trx0trx.h:1065: The assertion happened when the victim was
        BF aborted via MDL while it was committing. This commit changes
        MDL BF aborts so that transactions which are committing cannot
        be BF aborted via MDL. The RQG grammar attached in the issue
        could not reproduce the crash anymore.
      
      Original commit message from 10.5 fix:
      
          MDEV-29293 MariaDB stuck on starting commit state
      
          The problem seems to be a deadlock between KILL command execution
          and BF abort issued by an applier, where:
          * KILL has locked victim's LOCK_thd_kill and LOCK_thd_data.
          * Applier has innodb side global lock mutex and victim trx mutex.
          * KILL is calling innobase_kill_query, and is blocked by innodb
            global lock mutex.
          * Applier is in wsrep_innobase_kill_one_trx and is blocked by
            victim's LOCK_thd_kill.
      
          The fix in this commit removes the TOI replication of KILL command
          and makes KILL execution less intrusive operation. Aborting the
          victim happens now by using awake_no_mutex() and ha_abort_transaction().
          If the KILL happens when the transaction is committing, the
          KILL operation is postponed to happen after the statement
          has completed in order to avoid KILL to interrupt commit
          processing.
      
          Notable changes in this commit:
          * wsrep client connections's error state may remain sticky after
            client connection is closed. This error message will then pop
            up for the next client session issuing first SQL statement.
            This problem raised with test galera.galera_bf_kill.
            The fix is to reset wsrep client error state, before a THD is
            reused for next connetion.
          * Release THD locks in wsrep_abort_transaction when locking
            innodb mutexes. This guarantees same locking order as with applier
            BF aborting.
          * BF abort from MDL was changed to do BF abort on server/wsrep-lib
            side first, and only then do the BF abort on InnoDB side. This
            removes the need to call back from InnoDB for BF aborts which originate
            from MDL and simplifies the locking.
          * Removed wsrep_thd_set_wsrep_aborter() from service_wsrep.h.
            The manipulation of the wsrep_aborter can be done solely on
            server side. Moreover, it is now debug only variable and
            could be excluded from optimized builds.
          * Remove LOCK_thd_kill from wsrep_thd_LOCK/UNLOCK to allow more
            fine grained locking for SR BF abort which may require locking
            of victim LOCK_thd_kill. Added explicit call for
            wsrep_thd_kill_LOCK/UNLOCK where appropriate.
          * Wsrep-lib was updated to version which allows external
            locking for BF abort calls.
      
          Changes to MTR tests:
          * Disable galera_bf_abort_group_commit. This test is going to
            be removed (MDEV-30855).
          * Make galera_var_retry_autocommit result more readable by echoing
            cases and expectations into result. Only one expected result for
            reap to verify that server returns expected status for query.
          * Record galera_gcache_recover_manytrx as result file was incomplete.
            Trivial change.
          * Make galera_create_table_as_select more deterministic:
            Wait until CTAS execution has reached MDL wait for multi-master
            conflict case. Expected error from multi-master conflict is
            ER_QUERY_INTERRUPTED. This is because CTAS does not yet have open
            wsrep transaction when it is waiting for MDL, query gets interrupted
            instead of BF aborted. This should be addressed in separate task.
          * A new test galera_bf_abort_registering to check that registering trx gets
            BF aborted through MDL.
          * A new test galera_kill_group_commit to verify correct behavior
            when KILL is executed while the transaction is committing.
      Co-authored-by: default avatarSeppo Jaakola <seppo.jaakola@iki.fi>
      Co-authored-by: default avatarJan Lindström <jan.lindstrom@galeracluster.com>
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      f3071602
    • Teemu Ollakka's avatar
      MDEV-29293 MariaDB stuck on starting commit state · 3f59bbee
      Teemu Ollakka authored
      The problem seems to be a deadlock between KILL command execution
      and BF abort issued by an applier, where:
      * KILL has locked victim's LOCK_thd_kill and LOCK_thd_data.
      * Applier has innodb side global lock mutex and victim trx mutex.
      * KILL is calling innobase_kill_query, and is blocked by innodb
        global lock mutex.
      * Applier is in wsrep_innobase_kill_one_trx and is blocked by
        victim's LOCK_thd_kill.
      
      The fix in this commit removes the TOI replication of KILL command
      and makes KILL execution less intrusive operation. Aborting the
      victim happens now by using awake_no_mutex() and ha_abort_transaction().
      If the KILL happens when the transaction is committing, the
      KILL operation is postponed to happen after the statement
      has completed in order to avoid KILL to interrupt commit
      processing.
      
      Notable changes in this commit:
      * wsrep client connections's error state may remain sticky after
        client connection is closed. This error message will then pop
        up for the next client session issuing first SQL statement.
        This problem raised with test galera.galera_bf_kill.
        The fix is to reset wsrep client error state, before a THD is
        reused for next connetion.
      * Release THD locks in wsrep_abort_transaction when locking
        innodb mutexes. This guarantees same locking order as with applier
        BF aborting.
      * BF abort from MDL was changed to do BF abort on server/wsrep-lib
        side first, and only then do the BF abort on InnoDB side. This
        removes the need to call back from InnoDB for BF aborts which originate
        from MDL and simplifies the locking.
      * Removed wsrep_thd_set_wsrep_aborter() from service_wsrep.h.
        The manipulation of the wsrep_aborter can be done solely on
        server side. Moreover, it is now debug only variable and
        could be excluded from optimized builds.
      * Remove LOCK_thd_kill from wsrep_thd_LOCK/UNLOCK to allow more
        fine grained locking for SR BF abort which may require locking
        of victim LOCK_thd_kill. Added explicit call for
        wsrep_thd_kill_LOCK/UNLOCK where appropriate.
      * Wsrep-lib was updated to version which allows external
        locking for BF abort calls.
      
      Changes to MTR tests:
      * Disable galera_bf_abort_group_commit. This test is going to
        be removed (MDEV-30855).
      * Record galera_gcache_recover_manytrx as result file was incomplete.
        Trivial change.
      * Make galera_create_table_as_select more deterministic:
        Wait until CTAS execution has reached MDL wait for multi-master
        conflict case. Expected error from multi-master conflict is
        ER_QUERY_INTERRUPTED. This is because CTAS does not yet have open
        wsrep transaction when it is waiting for MDL, query gets interrupted
        instead of BF aborted. This should be addressed in separate task.
      * A new test galera_kill_group_commit to verify correct behavior
        when KILL is executed while the transaction is committing.
      Co-authored-by: default avatarSeppo Jaakola <seppo.jaakola@iki.fi>
      Co-authored-by: default avatarJan Lindström <jan.lindstrom@galeracluster.com>
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      3f59bbee
  5. 19 May, 2023 11 commits
    • Robin Newhouse's avatar
      Backport GitLab CI to 10.5 · 03d4fd32
      Robin Newhouse authored
      Add .gitlab-ci.yml file to earliest supported branch to enable
      automated building and testing for all MariaDB major branches.
      
      Note to mergers:
      GitLab CI is available for branches >= 10.6. This commit includes a
      GitLab CI file identical to that in branches >= 10.6, except for the
      MARIADB_MAJOR_VERSION variable which should reflect the branch version.
      A modified CI will be included in branches 10.4 with PR !2418.
      Also changed is the `allow_failure: true` for the MSAN build,
      which should be merged up to later branches.
      
      All new code of the whole pull request, including one or several files
      that are either new files or modified ones, are contributed under the
      BSD-new license. I am contributing on behalf of my employer
      Amazon Web Services, Inc.
      03d4fd32
    • Marko Mäkelä's avatar
      MDEV-31309 Innodb_buffer_pool_read_requests is not updated correctly · d2420669
      Marko Mäkelä authored
      srv_export_innodb_status(): Update
      export_vars.innodb_buffer_pool_read_requests as it was done
      before commit a55b951e (MDEV-26827).
      If innodb_status_variables[] pointed to a sharded variable, it would
      only access the first shard.
      d2420669
    • Marko Mäkelä's avatar
      MDEV-31308 InnoDB monitor trx_rseg_history_len was accidentally disabled by default · df524dc0
      Marko Mäkelä authored
      innodb_counter_info[]: Revert a change that was accidentally made in
      commit 204e7225
      df524dc0
    • Marko Mäkelä's avatar
      MDEV-29911 InnoDB recovery and mariadb-backup --prepare fail to report detailed progress · f2c17cc9
      Marko Mäkelä authored
      This is a 10.6 port of commit 2f9e2647
      from MariaDB Server 10.9 that is missing some optimization due to a
      more complex redo log format and recovery logic
      (which was simplified in commit 685d958e).
      
      The progress reporting of InnoDB crash recovery was rather intermittent.
      Nothing was reported during the single-threaded log record parsing, which
      could consume minutes when parsing a large log. During log application,
      there only was progress reporting in background threads that would be
      invoked on data page read completion.
      
      The progress reporting here will be detailed like this:
      
      InnoDB: Starting crash recovery from checkpoint LSN=628599973,5653727799
      InnoDB: Read redo log up to LSN=1963895808
      InnoDB: Multi-batch recovery needed at LSN 2534560930
      InnoDB: Read redo log up to LSN=3312233472
      InnoDB: Read redo log up to LSN=1599646720
      InnoDB: Read redo log up to LSN=2160831488
      InnoDB: To recover: LSN 2806789376/2806819840; 195082 pages
      InnoDB: To recover: LSN 2806789376/2806819840; 63507 pages
      InnoDB: Read redo log up to LSN=3195776000
      InnoDB: Read redo log up to LSN=3687099392
      InnoDB: Read redo log up to LSN=4165315584
      InnoDB: To recover: LSN 4374395699/4374440960; 241454 pages
      InnoDB: To recover: LSN 4374395699/4374440960; 123701 pages
      InnoDB: Read redo log up to LSN=4508724224
      InnoDB: Read redo log up to LSN=5094550528
      InnoDB: To recover: 205230 pages
      
      The previous messages "Starting a batch to recover" or
      "Starting a final batch to recover" will be replaced by
      "To recover: ... pages" messages.
      
      If a batch lasts longer than 15 seconds, then there will be
      progress reports every 15 seconds, showing the number of remaining pages.
      For the non-final batch, the "To recover:" message includes two end LSN:
      that of the batch, and of the recovered log. This is the primary measure
      of progress. The batch will end once the number of pages to recover
      reaches 0.
      
      If recovery is possible in a single batch, the output will look like this,
      with a shorter "To recover:" message that counts only the remaining pages:
      
      InnoDB: Starting crash recovery from checkpoint LSN=628599973,5653727799
      InnoDB: Read redo log up to LSN=1984539648
      InnoDB: Read redo log up to LSN=2710875136
      InnoDB: Read redo log up to LSN=3358895104
      InnoDB: Read redo log up to LSN=3965299712
      InnoDB: Read redo log up to LSN=4557417472
      InnoDB: Read redo log up to LSN=5219527680
      InnoDB: To recover: 450915 pages
      
      We will also speed up recovery by improving the memory management and
      implementing multi-threaded recovery of data pages that will not need
      to be read into the buffer pool ("fake read"). Log application in the
      "fake read" threads will be protected by an atomic being_recovered field
      and exclusive buf_page_t::lock.
      
      Recovery will reserve for data pages two thirds of the buffer pool,
      or 256 pages, whichever is smaller. Previously, we could only use at most
      one third of the buffer pool for buffered log records. This would typically
      mean that with large buffer pools, recovery unnecessary consisted of
      multiple batches.
      
      If recovery runs out of memory, it will "roll back" or "rewind" the current
      mini-transaction. The recv_sys.recovered_lsn and recv_sys.pages
      will correspond to the "out of memory LSN", at the end of the previous
      complete mini-transaction.
      
      If recovery runs out of memory while executing the final recovery batch,
      we can simply invoke recv_sys.apply(false) to make room, and resume
      parsing.
      
      If recovery runs out of memory before the final batch, we will
      scan the redo log to the end and check for any missing or inconsistent
      files. In this version of the patch, we will throw away any previously
      buffered recv_sys.pages and rescan the log from the checkpoint onwards.
      
      recv_sys_t::pages_it: A cached iterator to recv_sys.pages.
      
      recv_sys_t::is_memory_exhausted(): Remove. We will have out-of-memory
      handling deep inside recv_sys_t::parse().
      
      recv_sys_t::rewind(), page_recv_t::recs_t::rewind():
      Remove all log starting with a specific LSN.
      
      IORequest::write_complete(), IORequest::read_complete():
      Replaces fil_aio_callback().
      
      read_io_callback(), write_io_callback(): Replaces io_callback().
      
      IORequest::fake_read_complete(), fake_io_callback(), os_fake_read():
      Process a "fake read" request for concurrent recovery.
      
      recv_sys_t::apply_batch(): Choose a number of successive pages
      for a recovery batch.
      
      recv_sys_t::erase(recv_sys_t::map::iterator): Remove log records for a
      page whose recovery is not in progress. Log application threads
      will not invoke this; they will only set being_recovered=-1 to indicate
      that the entry is no longer needed.
      
      recv_sys_t::garbage_collect(): Remove all being_recovered=-1 entries.
      
      recv_sys_t::wait_for_pool(): Wait for some space to become available
      in the buffer pool.
      
      mlog_init_t::mark_ibuf_exist(): Avoid calls to
      recv_sys::recover_low() via ibuf_page_exists() and buf_page_get_low().
      Such calls would lead to double locking of recv_sys.mutex, which
      depending on implementation could cause a deadlock. We will use
      lower-level calls to look up index pages.
      
      buf_LRU_block_remove_hashed(): Disable consistency checks for freed
      ROW_FORMAT=COMPRESSED pages. Their contents could be uninitialized garbage.
      This fixes an occasional failure of the test
      innodb.innodb_bulk_create_index_debug.
      
      Tested by: Matthias Leich
      f2c17cc9
    • Vlad Lesin's avatar
      MDEV-31256 fil_node_open_file() releases fil_system.mutex allowing other... · 54227847
      Vlad Lesin authored
      MDEV-31256 fil_node_open_file() releases fil_system.mutex allowing other thread to open its file node
      
      There is room between mutex_exit(&fil_system.mutex) and
      mutex_enter(&fil_system.mutex) calls in fil_node_open_file(). During this
      room another thread can open the node, and ut_ad(!node->is_open())
      assertion in fil_node_open_file_low() can fail.
      
      The fix is not to open node if it was already opened by another thread.
      54227847
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 1fe830b5
      Marko Mäkelä authored
      1fe830b5
    • Marko Mäkelä's avatar
      Merge bb-10.6-release into 10.6 · 347e22fb
      Marko Mäkelä authored
      347e22fb
    • Marko Mäkelä's avatar
      Merge bb-10.5-release into 10.5 · 06d555a4
      Marko Mäkelä authored
      06d555a4
    • Marko Mäkelä's avatar
      MDEV-31234 related cleanup · e5933b99
      Marko Mäkelä authored
      trx_purge_free_segment(), trx_purge_truncate_rseg_history():
      Replace some unreachable code with debug assertions.
      A buffer-fix does prevent pages from being evicted
      from the buffer pool; see buf_page_t::can_relocate().
      
      Tested by: Matthias Leich
      e5933b99
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 37492960
      Marko Mäkelä authored
      37492960
    • Marko Mäkelä's avatar
      MDEV-31234 InnoDB does not free UNDO after the fix of MDEV-30671 · e0084b9d
      Marko Mäkelä authored
      trx_purge_truncate_history(): Only call trx_purge_truncate_rseg_history()
      if the rollback segment is safe to process. This will avoid leaking undo
      log pages that are not yet ready to be processed. This fixes a regression
      that was introduced in
      commit 0de3be8c (MDEV-30671).
      
      trx_sys_t::any_active_transactions(): Separately count XA PREPARE
      transactions.
      
      srv_purge_should_exit(): Terminate slow shutdown if the history size
      does not change and XA PREPARE transactions exist in the system.
      This will avoid a hang of the test innodb.recovery_shutdown.
      
      Tested by: Matthias Leich
      e0084b9d
  6. 18 May, 2023 1 commit
    • Otto Kekäläinen's avatar
      Remove CODEOWNERS as obsolete · caeff135
      Otto Kekäläinen authored
      The CODEOWNERS was added almost 3 years ago but never saw any adoption.
      Only one person used it (me) to mark what files I maintain and for which
      I wish to review commits. No other maintainers or code paths were added,
      so clean it away for clarity.
      caeff135
  7. 15 May, 2023 1 commit
  8. 12 May, 2023 3 commits
    • Tuukka Pasanen's avatar
      MDEV-30951: Fix small perlcritic and enable modern Perl · f522b0f2
      Tuukka Pasanen authored
      Add Modern Perl headers. Perl 5.16 is still fairly
      old from 2012.
      
      Enable UTF-8, warnings and make script 'strict'
      
      Small fixes for perlcritic reported problems and some crashes
      
      I/O layer ":utf8" used at line 268, column 16.  Use ":encoding(UTF-8)" to get strict validation.  (Severity: 5)
      "return" statement with explicit "undef" at line 806, column 4.  See page 199 of PBP.  (Severity: 5)
      "return" statement with explicit "undef" at line 6844, column 4.  See page 199 of PBP.  (Severity: 5)
      "return" statement with explicit "undef" at line 7524, column 4.  See page 199 of PBP.  (Severity: 5)
      "return" statement with explicit "undef" at line 7527, column 4.  See page 199 of PBP.  (Severity: 5)
      "return" statement with explicit "undef" at line 7599, column 4.  See page 199 of PBP.  (Severity: 5)
      "return" statement with explicit "undef" at line 7602, column 4.  See page 199 of PBP.  (Severity: 5)
      Expression form of "eval" at line 7784, column 4.  See page 161 of PBP.  (Severity: 5)
      Expression form of "eval" at line 7806, column 4.  See page 161 of PBP.  (Severity: 5)
      Glob written as <...> at line 8016, column 25.  See page 167 of PBP.  (Severity: 5)
      "return" statement followed by "sort" at line 9195, column 60.  Behavior is undefined if called in scalar context.  (Severity: 5)
      Expression form of "eval" at line 9846, column 10.  See page 161 of PBP.  (Severity: 5)
      f522b0f2
    • Marko Mäkelä's avatar
      MDEV-31254 InnoDB: Trying to read doublewrite buffer page · c9eff1a1
      Marko Mäkelä authored
      buf_read_page_low(): Remove an error message and a debug assertion
      that can be triggered when using innodb_page_size=4k and
      innodb_file_per_table=0. In that case, buf_read_ahead_linear()
      may be invoked on page 255, which is one less than the first
      page of the doublewrite buffer (256).
      c9eff1a1
    • Marko Mäkelä's avatar
      MDEV-31253 Freed data pages are not always being scrubbed · 477285c8
      Marko Mäkelä authored
      fil_space_t::flush_freed(): Renamed from buf_flush_freed_pages();
      this is a backport of aa458506 from 10.6.
      Invoke log_write_up_to() on last_freed_lsn, instead of avoiding
      the operation when the log has not yet been written.
      A more costly alternative would be that log_checkpoint() would invoke
      this function on every affected tablespace.
      477285c8
  9. 11 May, 2023 1 commit