mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-30527 Assertion !m_freed_pages in mtr_t::start() on DROP TEMPORARY TABLE
mtr_t::commit(): Add special handling of
innodb_immediate_scrub_data_uncompressed for TEMPORARY TABLE.
This fixes a regression that was caused by
commit de4030e4d4
(MDEV-30400).
This commit is contained in:
@@ -10,3 +10,18 @@ FLUSH TABLE t1 FOR EXPORT;
|
||||
UNLOCK TABLES;
|
||||
NOT FOUND /unicycle|repairman/ in t1.ibd
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-30527 Assertion !m_freed_pages in mtr_t::start()
|
||||
# on DROP TEMPORARY TABLE
|
||||
#
|
||||
SET @scrub= @@GLOBAL.innodb_immediate_scrub_data_uncompressed;
|
||||
SET GLOBAL innodb_immediate_scrub_data_uncompressed= 1;
|
||||
SET @fpt=@@GLOBAL.innodb_file_per_table;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
||||
CREATE TABLE t ENGINE=InnoDB AS SELECT 1;
|
||||
DROP TABLE t;
|
||||
SET GLOBAL innodb_file_per_table=@fpt;
|
||||
CREATE TEMPORARY TABLE tmp ENGINE=InnoDB AS SELECT 1;
|
||||
DROP TABLE tmp;
|
||||
SET GLOBAL INNODB_IMMEDIATE_SCRUB_DATA_UNCOMPRESSED= @scrub;
|
||||
# End of 10.6 tests
|
||||
|
@@ -27,3 +27,19 @@ FLUSH TABLE t1 FOR EXPORT;
|
||||
UNLOCK TABLES;
|
||||
-- source include/search_pattern_in_file.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30527 Assertion !m_freed_pages in mtr_t::start()
|
||||
--echo # on DROP TEMPORARY TABLE
|
||||
--echo #
|
||||
SET @scrub= @@GLOBAL.innodb_immediate_scrub_data_uncompressed;
|
||||
SET GLOBAL innodb_immediate_scrub_data_uncompressed= 1;
|
||||
SET @fpt=@@GLOBAL.innodb_file_per_table;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
||||
CREATE TABLE t ENGINE=InnoDB AS SELECT 1;
|
||||
DROP TABLE t;
|
||||
SET GLOBAL innodb_file_per_table=@fpt;
|
||||
CREATE TEMPORARY TABLE tmp ENGINE=InnoDB AS SELECT 1;
|
||||
DROP TABLE tmp;
|
||||
SET GLOBAL INNODB_IMMEDIATE_SCRUB_DATA_UNCOMPRESSED= @scrub;
|
||||
--echo # End of 10.6 tests
|
||||
|
@@ -210,7 +210,20 @@ void mtr_t::commit()
|
||||
srv_stats.log_write_requests.inc();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_freed_pages)
|
||||
{
|
||||
ut_ad(!m_freed_pages->empty());
|
||||
ut_ad(m_freed_space == fil_system.temp_space);
|
||||
ut_ad(!is_trim_pages());
|
||||
for (const auto &range : *m_freed_pages)
|
||||
m_freed_space->add_free_range(range);
|
||||
delete m_freed_pages;
|
||||
m_freed_pages= nullptr;
|
||||
m_freed_space= nullptr;
|
||||
}
|
||||
release();
|
||||
}
|
||||
|
||||
release_resources();
|
||||
}
|
||||
|
Reference in New Issue
Block a user