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;
|
UNLOCK TABLES;
|
||||||
NOT FOUND /unicycle|repairman/ in t1.ibd
|
NOT FOUND /unicycle|repairman/ in t1.ibd
|
||||||
DROP TABLE t1;
|
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;
|
UNLOCK TABLES;
|
||||||
-- source include/search_pattern_in_file.inc
|
-- source include/search_pattern_in_file.inc
|
||||||
DROP TABLE t1;
|
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();
|
srv_stats.log_write_requests.inc();
|
||||||
}
|
}
|
||||||
else
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
release_resources();
|
release_resources();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user