mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
c92f7e287f
fil_space_t::freed_ranges: Store ranges of freed page numbers. fil_space_t::last_freed_lsn: Store the most recent LSN of freeing a page. fil_space_t::freed_mutex: Protects freed_ranges, last_freed_lsn. fil_space_create(): Initialize the freed_range mutex. fil_space_free_low(): Frees the freed_range mutex. range_set: Ranges of page numbers. buf_page_create(): Removes the page from freed_ranges when page is being reused. btr_free_root(): Remove the PAGE_INDEX_ID invalidation. Because btr_free_root() and dict_drop_index_tree() are executed in the same atomic mini-transaction, there is no need to invalidate the root page. buf_release_freed_page(): Split from buf_flush_freed_page(). Skip any I/O buf_flush_freed_pages(): Get the freed ranges from tablespace and Write punch-hole or zeroes of the freed ranges. buf_flush_try_neighbors(): Handles the flushing of freed ranges. mtr_t::freed_pages: Variable to store the list of freed pages. mtr_t::add_freed_pages(): To add freed pages. mtr_t::clear_freed_pages(): To clear the freed pages. mtr_t::m_freed_in_system_tablespace: Variable to indicate whether page has been freed in system tablespace. mtr_t::m_trim_pages: Variable to indicate whether the space has been trimmed. mtr_t::commit(): Add the freed page and update the last freed lsn in the tablespace and clear the tablespace freed range if space is trimmed. file_name_t::freed_pages: Store the freed pages during recovery. file_name_t::add_freed_page(), file_name_t::remove_freed_page(): To add and remove freed page during recovery. store_freed_or_init_rec(): Store or remove the freed pages while encountering FREE_PAGE or INIT_PAGE redo log record. recv_init_crash_recovery_spaces(): Add the freed page encountered during recovery to respective tablespace.
26 lines
686 B
Text
26 lines
686 B
Text
-- source include/have_innodb.inc
|
|
|
|
let $MYSQLD_DATADIR=`select @@datadir`;
|
|
CREATE TABLE t1(f1 int auto_increment primary key,
|
|
f2 varchar(256),
|
|
f3 text) engine = innodb;
|
|
let $numinserts = 500;
|
|
--disable_query_log
|
|
begin;
|
|
while ($numinserts)
|
|
{
|
|
dec $numinserts;
|
|
eval INSERT INTO t1(f2,f3) VALUES ('repairman', repeat('unicycle', 1000));
|
|
}
|
|
commit;
|
|
--enable_query_log
|
|
FLUSH TABLE t1 FOR EXPORT;
|
|
UNLOCK TABLES;
|
|
|
|
let SEARCH_PATTERN= unicycle|repairman;
|
|
let SEARCH_FILE= $MYSQLD_DATADIR/test/t1.ibd;
|
|
-- source include/search_pattern_in_file.inc
|
|
DELETE FROM t1;
|
|
-- source include/wait_all_purged.inc
|
|
-- source include/search_pattern_in_file.inc
|
|
DROP TABLE t1;
|